我在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。 –