name = "77";
var obj = {
name: "88",
getName: function () {
return this.name;
}
};
(obj.getName = obj.getName)(); //返回 77
高级程序设计183页解释说:因为这个赋值表达式的值是函数本身,所以this的值不能得到维持,结果就返回了全局变量。 不是很能理解,希望大神再给讲解一下
name = "77";
var obj = {
name: "88",
getName: function () {
return this.name;
}
};
(obj.getName = obj.getName)(); //返回 77
高级程序设计183页解释说:因为这个赋值表达式的值是函数本身,所以this的值不能得到维持,结果就返回了全局变量。 不是很能理解,希望大神再给讲解一下
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
这么理解,首先
obj.getName = obj.getName
,这个返回的是obj.getName
对应的值,也就是内存里的那个函数,于是就可以将obj.getName = obj.getName
视作全局函数。需要理解的是变量赋值的过程啊!关于作用域
关于赋值