我正在尝试使用一个调用自身并被计数器破坏的 setTimeout 函数。但是,我不断收到 NaN 错误。有人可以帮助我吗?
<script language="javascript">
function Tests() {
this.i = 0;
}
Tests.prototype.increment_test = function () {
if (this.i > 2) {
return;
}
alert(this.i);
this.i++;
setTimeout(this.increment_test, 30);
}
ta = new Tests();
ta.increment_test();
</script>
最佳答案
this
未永久绑定(bind)到 increment_test
函数。
您可以在变量中引用 this
,并在匿名函数中使用它。
var self = this;
setTimeout(function() { self.increment_test()}, 30);
或者您可以使用 Function.prototype.bind
将调用上下文绑定(bind)到函数。
setTimeout(this.increment_test.bind(this), 30);
或者您可以制作一个绑定(bind)上下文的小工具。
function _bindCtx(fn, ctx) {
return function() { return fn.apply(ctx); };
}
然后这样调用它。
setTimeout(_bindCtx(this.increment_test, this), 30);
关于javascript - 调用 setTimeout 时出现 NaN 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12390385/