JavaScript 方法存储到变量后 'this' 指向问题及解决方案
当将一个方法存储到变量中时,该方法的执行上下文(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' 对象,而不是全局对象。
原文地址: https://www.cveoy.top/t/topic/ogVP 著作权归作者所有。请勿转载和采集!