当将一个方法存储到变量中时,该方法的执行上下文(execution context)将发生变化。在此情况下,该方法的 this 指向全局对象。因此,当手动调用该方法时,this 的值将不同于原始情况下的值。

为了解决这个问题,可以使用 bind() 方法来绑定方法的执行上下文。例如:

const myMethod = function() {
  console.log(this); // 输出当前执行上下文的 this 值
};

const myObj = {
  myProp: 'hello'
};

const boundMethod = myMethod.bind(myObj);

boundMethod(); // 输出 myObj 对象

在此示例中,我们定义了一个方法 myMethod,然后将其绑定到 myObj 对象上。我们使用 bind() 方法来创建一个新的方法 boundMethod,该方法具有与 myMethod 相同的函数体,但其执行上下文被绑定到 myObj 对象。因此,当调用 boundMethod() 方法时,它的 this 值将指向 myObj 对象,而不是全局对象

js方法存到变量中 怎么调用 手工调用后 this 变了

原文地址: https://www.cveoy.top/t/topic/fsw7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录