JavaScript:关于这里的this 很困惑

2024-12-22 11:24:48
推荐回答(3个)
回答1:

this指向调用函数的对象(也就是点前面的对象)
object.getName();和(object.getName)();
都明确指定了函数调用者
所以this指向object
(object.getName=object.getName)();里前面的赋值表达式会返回赋的值也就是函数本身
等同于(function(){return this.name;})();
这里函数没有指定调用者
this指向全局变量window
所以返回window.name

不要去管维持不维持是什么意思
记住"this指向调用函数的对象"就行了
一般都是点前面的对象, 也可以通过call和apply来改变this指向

感觉这本书在钻牛角尖, 目的就是弄点混淆的概念不让读者看懂

回答2:

this在闭包内和闭包外是不同的。

闭包之外,全局函数,this等于window,当函数被作为某个对象的方法调用时,this等于那个对象。
匿名函数执行环境具有全局性,所以this指向window,所以结果是"The Window"

他的维持二字的意思,就是这样。

回答3:

我是这么理解的,第二种写法得出My Object 是因为其返回的函数调用的name任然是在getName函数的作用域中的,所以name的值是My Object .第三种写法得出TheWindow是因为函数在赋值时,会新建一个作用域,同时this会指向window。