首页  >  文章  >  web前端  >  调用回调函数时,什么决定了“this”的值?

调用回调函数时,什么决定了“this”的值?

Barbara Streisand
Barbara Streisand原创
2024-11-04 03:56:02997浏览

What Determines the Value of `this` When a Callback Function Is Called?

何时设置 this 的值

在 JavaScript 中,this 的值由函数的调用方式决定。有六种主要方法可以设置它:

  1. 正常函数调用: this 设置为全局对象(例如,浏览器中的窗口)或在严格模式下未定义。
  2. 方法调用: this 设置为调用该方法的对象。
  3. .apply() 或 .call(): this设置为作为第一个参数传递的对象。
  4. new 运算符: 当使用 new 调用函数时,会创建一个新对象并将 this 设置为该对象。
  5. .bind(): 创建一个新的存根函数,其中 this 绑定到作为第一个参数传递的对象。
  6. ES6 Fat Arrow Function: this绑定到封闭范围的词法值。

回调函数的情况

在您的示例中:

<code class="javascript">randomFunction(this.sumData.bind(this));</code>
  • this.sumData .bind(this) 使用 .bind() 将 this 绑定到 obj 对象。
  • 因此,当 randomFunction 调用回调函数时,由于 .bind(),this 被设置为 obj。
  • 如果你要将 this.sumData.bind(this) 与 callback(data) 交换,randomFunction 中的 this 将被设置为全局对象(或者在严格模式下未定义)。

这是因为回调是作为对 this.sumData.bind(this) 的引用传递的,但是当 randomFunction 调用回调时,它会根据正常函数调用的规则设置 this。

以上是调用回调函数时,什么决定了“this”的值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn