Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个关键词在JavaScript中是否超出了范围?_Javascript - Fatal编程技术网

这个关键词在JavaScript中是否超出了范围?

这个关键词在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

我不知道为什么下面的代码没有定义。我试图在say方法var _this=this下声明一个变量,然后在console.log out _this.name下声明,但没有成功

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