首页  >  文章  >  web前端  >  JavaScript 函数调用和回调中的“this”如何工作?

JavaScript 函数调用和回调中的“this”如何工作?

DDD
DDD原创
2024-11-03 15:42:30304浏览

How Does `this` Work in JavaScript Function Calls and Callbacks?

何时在 JavaScript 中设置 This 指针

理解函数调用中的 This 指针

在 JavaScript 中,每个函数调用都会设置对此的新值。 this 的值由调用函数的方法决定。

设置 this 指针的主要方法

设置 this 指针主要有六种方法在 JavaScript 中:

  • 普通函数调用: 默认为全局对象(例如,窗口)或未定义(严格模式下)。
  • 方法Call: 指向拥有该方法的对象。
  • **.apply() 或 .call():根据传递的参数设置此值。
  • 使用 new : 创建一个新对象并将 this 设置为它。
  • **.bind():返回一个具有自定义 this 值的新函数,内部使用 .apply()。
  • ES6 胖箭头函数: 绑定当前词法 this 值(无法覆盖)。

回调函数中的 This

回调函数并不是设置这个的独特方法。调用函数在调用回调时确定 this 值。

示例分析

在您的代码片段中:

<code class="javascript">var randomFunction = function(callback) {
  var data = 10;
  callback(data);
};

var obj = {
  initialData: 20,
  sumData: function(data) {
    var sum = this.initialData + data;
    console.log(sum);
  },
  prepareRandomFunction: function() {
    randomFunction(this.sumData.bind(this));
  }
};

obj.prepareRandomFunction();</code>
  • obj.prepareRandomFunction() 使用方法调用,将 this 设置为 obj.
  • randomFunction(this.sumData.bind(this)) 使用 .bind(),它将当前的 this 值(即 obj)绑定到回调函数返回。

因此,当 randomFunction 调用回调时,由于 this.sumData.bind(this) 中使用了 .bind(),this 被设置为 obj。

以上是JavaScript 函数调用和回调中的“this”如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

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