我很困惑。
我正在创建 2 个共享相同原型的对象,但是当第二个对象触发该run()
方法时,我希望它停止在共享继承对象timer
( Foo.prototype.timer
) 上设置的超时。
如果我将所有内容更改为使用全局变量而不是Foo.prototype.timer
,则此方法有效..
如果两个对象共享相同,为什么不清除Foo.prototype.timer
?
function Foo(){
// generate a random ID to show which object we're on
this.id = Math.floor(Math.random() * 1000) + 2;
}
Foo.prototype = {
run : function(){
var that = this,
count = 0;
this.stop();
function calc(){
console.log(that.id);
if( count++ < 20 )
that.timer = setTimeout( calc, 100 );
}
that.timer = setTimeout( calc, 200 );
},
stop : function(){
clearTimeout(this.timer);
}
}
// initiating
var foo = new Foo();
foo.run();
var bar = new Foo();
bar.run();
(请在控制台中复制并运行此代码以查看此问题。)