我在javascript中有一个simpe对象,它有很少的方法..其中两个我想定期调用window.setTimeout
函数。我现在的代码看起来像这样。范围内的javascript
var shakeResolver = function() {
var resolveTimeout;
console.log(this);
var context = this;
this.startShakeResolve = function() {
this.resolveTimeout = window.setTimeout(this.call(context.stopShakeResolve, context), 2000);
$(window)
.on('devicemotion', this.onDeviceMotion);
};
this.onDeviceMotion = function (event) {};
this.stopShakeResolve = function (context) {
this.resolveTimeout = window.setTimeout(context.startShakeResolve, settings.interval);
};
}
的问题显然是在我的误解如何作用域工作,它看起来呼吁从超时功能时,它从另一个方面称为它实际上并不存在什么样的?
在第一次调用'setTimeout'时,您立即执行一个函数并实际将*返回值*(它恰好是未定义的)作为超时后调用的函数。 (编辑:当然,假设你使用'this.call'调用通常的'Function.call'而不是你自己的变体。) – DCoder
什么是'this'?它是一个函数吗?你怎么叫'shakeResolver'?要了解关于'this'的更多信息,请查看https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/this。 –