何时设置 this 的值
在 JavaScript 中,this 的值由函数的调用方式决定。有六种主要方法可以设置它:
-
正常函数调用: this 设置为全局对象(例如,浏览器中的窗口)或在严格模式下未定义。
-
方法调用: this 设置为调用该方法的对象。
-
.apply() 或 .call(): this设置为作为第一个参数传递的对象。
-
new 运算符: 当使用 new 调用函数时,会创建一个新对象并将 this 设置为该对象。
-
.bind(): 创建一个新的存根函数,其中 this 绑定到作为第一个参数传递的对象。
-
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中文网其他相关文章!