在看《JavaScript高级程序设计(第三版)》时遇到了一个关于this指针的问题,希望大神能帮小弟解释清楚,在此谢过。
有如下代码段:
var name="The Window";
var object={
name:"MyObject",
getName:function(){
return this.name;
}
};
object.getName(); //"My Object"
(object.getName)(); //"My Object"
(object.getName=object.getName)(); //"The Window",非严格模式下
1.第一种情况是没有问题;
2.第二种情况加上了括号,表示引用了一个函数,书上说此时的object.getName和(object.getName)的定义相同,所以this的值得到了维持,所以返回"My Object";
3.第三种情况中,书上说赋值表达式的值是函数本身,所以this的值不能得到维持,结果就返回了"The Window"。
现在的问题是,尽管书上解释了,我还是搞不懂为什么第二种情况下this值得到了维持,而第三种情况下this值又得不到维持了呢?
看我之前的提问,http://segmentfault.com/q/1010000003504317