可变名称的声明=全局范围中的米歇尔的声明未被函数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'