84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
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
视作全局函数。需要理解的是变量赋值的过程啊!关于作用域
关于赋值
你描述的和这个是等价的:
想得到你想要的结果,你应该这么用: