变量name = michelle在全局范围内的声明未被函数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();
答案 0 :(得分:2)
它在此脚本中按预期工作,可以通过三种方式更改此变量:
使用构造函数时,类函数。
当你使用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();

答案 1 :(得分:-1)
问题出在您运行函数的上下文中。在2个第一次运行中,它进入对象的上下文,在那里你有'这个'内部变量。对于最后一个 - 您尝试输出' this.name'但在你里面只有'名字'