84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
name = "77"; var obj = { name: "88", getName: function () { return this.name; } }; (obj.getName = obj.getName)(); //返回 77
高级程序设计183页解释说:因为这个赋值表达式的值是函数本身,所以this的值不能得到维持,结果就返回了全局变量。 不是很能理解,希望大神再给讲解一下
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
这么理解,首先obj.getName = obj.getName,这个返回的是obj.getName对应的值,也就是内存里的那个函数,于是就可以将obj.getName = obj.getName视作全局函数。需要理解的是变量赋值的过程啊!关于作用域关于赋值
obj.getName = obj.getName
obj.getName
你描述的和这个是等价的:
想得到你想要的结果,你应该这么用:
这么理解,首先
obj.getName = obj.getName
,这个返回的是obj.getName
对应的值,也就是内存里的那个函数,于是就可以将obj.getName = obj.getName
视作全局函数。需要理解的是变量赋值的过程啊!关于作用域
关于赋值
你描述的和这个是等价的:
想得到你想要的结果,你应该这么用: