我在将变量从对象内部传递到 setTimeout
时遇到了一些有趣的问题。起初,我尝试将我从 setTimeout
调用的函数放在我的对象上,这样我就不必将任何变量传递给它(我希望它可以自己访问我的对象)。这没有用,显然是因为当我从 setTimeout
调用它时该函数不知何故变成了全局函数,并且不再能够访问我的对象的变量。
这是我的下一次尝试,但它也不起作用:
function MyObj() {
this.foo = 10;
this.bar = 20;
this.duration = 1000;
setTimeout(function(){
AnotherFunction(this.foo, this.bar)
}, this.duration);
}
那么,我怎样才能将对象中的变量传递到 setTimeout
中呢?不,由于各种不相关的原因,AnotherFunction
将无法直接访问 MyObj
,所以这也是不可能的。
最佳答案
我认为问题在于,当您的函数执行时,this
不再绑定(bind)到 MyObj
。你可以试试
function MyObj() {
var that = this;
this.foo = 10;
this.foo = 20;
this.duration = 1000;
setTimeout(function(){AnotherFunction(that.foo, that.bar)}, this.duration);
}
或者我确实还有一个想法应该行不通。
关于javascript - 将变量从对象内部传递到 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754621/