这个关键词在JavaScript中是否超出了范围?
我不知道为什么下面的代码没有定义。我试图在say方法var _this=this下声明一个变量,然后在console.log out _this.name下声明,但没有成功这个关键词在JavaScript中是否超出了范围?,javascript,Javascript,我不知道为什么下面的代码没有定义。我试图在say方法var _this=this下声明一个变量,然后在console.log out _this.name下声明,但没有成功 let dog = { name: 'doggo', sayName() { console.log(this.name) } } let sayName = dog.sayName sayName() 在窗口上下文中执行函数,因此这是一个窗口。您可能希望通过传递狗的上下文来保持狗的上下文: sayNa
let dog = {
name: 'doggo',
sayName() {
console.log(this.name)
}
}
let sayName = dog.sayName
sayName()
在窗口上下文中执行函数,因此这是一个窗口。您可能希望通过传递狗的上下文来保持狗的上下文:
sayName.call(dog);//doggo
或者通过保持一个绑定函数:
let sayName = dog.sayName.bind(dog);
sayName();//doggo
window.name=“测试”;sayName()//test您可能想使用一个类:@james,因为???这与继承无关,因为假设海报需要多条不同名字的狗
let sayName = dog.sayName.bind(dog);
sayName();//doggo