在全局范围中声明的可变范围并未通过函数识别



可变名称的声明=全局范围中的米歇尔的声明未被函数saynameforall()识别,请让我知道问题是什么。

function sayNameForAll() {
console.log(this.name);
}

var person1 = {
name: "Nicholas",
sayName: sayNameForAll
};

var person2 = {
name: "Greg",
sayName: sayNameForAll
};

var name = "Michael";
person1.sayName(); 
person2.sayName(); 
sayNameForAll();

这是我的代码的输出

它在此脚本中正常工作,该变量可以以三种方式更改:

  • 当您在这种情况下将其称为在物体内部时目的 。
  • 当您使用构造函数时,类功能。

  • ,当您使用call()时,apply()或bind();方法。

其他明智将获得全局对象...

function sayNameForAll() {
console.log(this.name);
}
var person1 = {
name: "Nicholas",
sayName: sayNameForAll
};
var person2 = {
name: "Greg",
sayName: sayNameForAll
};
var name = "Michael";
person1.sayName(); 
person2.sayName(); 
sayNameForAll();

问题在您运行函数的上下文中。在第2个运行中,它在对象的上下文中,您具有"此"内部变量。对于最后一个 - 您正在尝试输出'this.name',但内部只有'name'

最新更新