javascript - 为什么当我尝试将函数绑定(bind)到自身时, "this"对象仍然引用窗口?

标签 javascript

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 直到您的函数调用完成后才分配。

详细来说,这是第一个示例中发生的事情:

  1. 定义了匿名函数。
  2. 使用 a 作为 this 参数调用该函数。
  3. 函数执行,但由于 a 仍未定义,this 转而返回到 window
  4. 函数返回undefined,赋值给a

关于javascript - 为什么当我尝试将函数绑定(bind)到自身时, "this"对象仍然引用窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11870190/

相关文章:

javascript - 使用 JavaScript 访问普通 HTML 页面中的 Sharepoint 列表数据

javascript - 当我单击按钮时,将变量作为文本放在按钮上

javascript - Twitter Bootstrap 模式不工作

javascript - 在所有图像加载无效后执行js

javascript - Selenium/Python Jquery 弹出窗口

javascript - put 请求如何通过 Angular、Express 和 Mongoose 工作?

javascript - jquery 中的循环 Action /事件

javascript - 我可以在 Javascript 中抛出异常,停止 Javascript 执行吗?

javascript - 为什么 .click() 和 ("click") 在 Bootstrap 折叠按钮上的行为不同?

javascript - 执行RoR中通过ajax请求返回的javascript