var a = function() {
alert( this ); // [object Window]
alert( a ); // undefined
}.call( a );
为什么 this
仍然引用窗口对象并且 a
未定义。或者,当我按以下方式执行时,this
等于函数 a
不是未定义的。
var a = function() {
return this === a; // true
};
a.call(a);
谁能解释为什么这两个看似等价的函数给出不同的结果?
最佳答案
因为在您的第一个示例中 a
直到您的函数调用完成后才分配。
详细来说,这是第一个示例中发生的事情:
- 定义了匿名函数。
- 使用
a
作为this
参数调用该函数。 - 函数执行,但由于
a
仍未定义,this
转而返回到window
。 - 函数返回
undefined
,赋值给a
。
关于javascript - 为什么当我尝试将函数绑定(bind)到自身时, "this"对象仍然引用窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11870190/