JavaScript中,为什么赋值表达式的值是函数本身,this的值不能得到维持呢?

2024-12-19 11:27:07
推荐回答(4个)
回答1:

因为赋值表达式本身是有返回的,object.getName=object.getName赋值表达式返回的是object.getName指向的那个函数,直接对赋值表达式的结果进行调用就等于是在全局作用域中调用了一个函数,此时函数中的this就指向全局作用域变量,所以此时this不能维持

回答2:

你贴出的代码是不是不全?this值得不到维持,一般都是在闭包中。需要重新申明一个变量,把当前this保存起来。

回答3:

(object.getName=object.getName)(); // 这样调用表示后 this 变为 window 对象了。
// 你可以在前面加一行代码
window.name = 'Window Name';// 在看发现输出的值是Window Name;

// 如果你要让object做为这个this,你可以这样做:
(object.getName=object.getName).call(this);

回答4:

(object.getName=object.getName)();

===
(function(){return this.name})() this指向全局对象

你可以修改(object.getName=object.getName)的对象
可以这样写(object.getName=object.getName).apply(object) this指向object

不过这样做有意义么,不懂