gpt4 book ai didi

javascript - 从同一类的另一个函数调用一个类的函数

转载 作者:行者123 更新时间:2023-12-01 00:46:25 25 4
gpt4 key购买 nike

class Frame {
constructor() {
this.init();
}

init(){
setTimeout(function(){this.secondFunction()}, 2000); // DOES NOT WORK
}

secondFunction(){
}
}

我试图从同一类的另一个函数调用一个类的函数。当我直接用“this.secondFunction()”调用它时,它工作正常。但是当我将它移动到 setTimeout 或 JQuery 函数的内部时,它不起作用并抛出错误“this.secondFunction 不是函数”。我认为这是因为当我从 setTimeout 调用它时,“this”更改为计时器对象。在这种情况下调用该函数的正确方法是什么?

最佳答案

setTimeout 函数中的 this 不是您想要的。使用箭头函数:

setTimeout(() => {
this.secondFunction();
}, 2000);

问题在于 setTimeout 内部的函数将 this 引用从新实例更改为 setTimeout,这并不是什么你自找的。箭头函数继承了它的 this 绑定(bind),因此它可以完美地工作。

ES5 的等效方法是在回调之外使用 bind 来更改绑定(bind)。

setTimeout(function() {
this.secondFunction();
}.bind(this), 2000);

关于javascript - 从同一类的另一个函数调用一个类的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57310438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com