this指向调用函数的对象(也就是点前面的对象)
object.getName();和(object.getName)();
都明确指定了函数调用者
所以this指向object
(object.getName=object.getName)();里前面的赋值表达式会返回赋的值也就是函数本身
等同于(function(){return this.name;})();
这里函数没有指定调用者
this指向全局变量window
所以返回window.name
不要去管维持不维持是什么意思
记住"this指向调用函数的对象"就行了
一般都是点前面的对象, 也可以通过call和apply来改变this指向
感觉这本书在钻牛角尖, 目的就是弄点混淆的概念不让读者看懂
this在闭包内和闭包外是不同的。
闭包之外,全局函数,this等于window,当函数被作为某个对象的方法调用时,this等于那个对象。
匿名函数执行环境具有全局性,所以this指向window,所以结果是"The Window"
他的维持二字的意思,就是这样。
我是这么理解的,第二种写法得出My Object 是因为其返回的函数调用的name任然是在getName函数的作用域中的,所以name的值是My Object .第三种写法得出TheWindow是因为函数在赋值时,会新建一个作用域,同时this会指向window。