我对这段小提琴曲有异议:
http://jsfiddle.net/y45jN/7/
var mainFunction = function() {
this.text;
this.repeater;
}
var repeatEvery = function(func, interval) {
var now = new Date();
var delay = interval - now % interval;
function start() {
var intervalID = setInterval(func, interval);
func(intervalID);
}
setTimeout(start, delay);
};
mainFunction.prototype.start = function(printText) {
this.text = printText;
var self = this;
var func = function(intervalID) {
if(intervalID){
this.repeater = intervalID;
}
document.getElementById('test').innerHTML += this.text + '<br/>';
};
repeatEvery(_.bind(func, this),1000);
}
mainFunction.prototype.stop = function() {
clearInterval(this.repeater);
}
var test = new mainFunction();
test.start('hello');
setTimeout(test.stop,10000);我的目标是调用停止函数并停止由开始函数设置的间隔。
发布于 2013-11-20 13:19:19
你需要做的
setTimeout(function(){ test.stop()}, 10000)或
setTimeout(test.stop.bind(test), 10000); //Bind method is not available in IE8 though而不是
setTimeout(test.stop, 10000);原因是Javascript在将回调传递给函数时丢失了" this“。
https://stackoverflow.com/questions/20097056
复制相似问题