JavaScript范围内的这个关键词?

时间:2017-07-04 09:49:51

标签: javascript

我不确定为什么我会使用下面的代码进行未定义。我试图在say方法var _this = this下声明一个变量,然后在console.log中声明_this.name,但它没有用。

let dog = {
  name: 'doggo',
  sayName() {
    console.log(this.name)
  }
}
let sayName = dog.sayName
sayName()

1 个答案:

答案 0 :(得分:3)

window.name="test";
sayName();//test

执行窗口上下文中的功能,这是窗口。您可能希望通过传递它来保持狗的上下文:

sayName.call(dog);//doggo

或通过保持绑定功能:

let sayName = dog.sayName.bind(dog);
sayName();//doggo