我不确定为什么我会使用下面的代码进行未定义。我试图在say方法var _this = this下声明一个变量,然后在console.log中声明_this.name,但它没有用。
let dog = {
name: 'doggo',
sayName() {
console.log(this.name)
}
}
let sayName = dog.sayName
sayName()
答案 0 :(得分:3)
window.name="test";
sayName();//test
执行窗口上下文中的功能,这是窗口。您可能希望通过传递它来保持狗的上下文:
sayName.call(dog);//doggo
或通过保持绑定功能:
let sayName = dog.sayName.bind(dog);
sayName();//doggo