Javascript 为什么setInterval添加的函数停止执行?
我有密码:Javascript 为什么setInterval添加的函数停止执行?,javascript,underscore.js,Javascript,Underscore.js,我有密码: function Creature(id){ self = this; this.lifecycle = {}; this._cid = id; this.lifeInterval = setInterval(function(){ _.each(self.lifecycle,function(lifecycleItem){ if (lifecycleItem.active) { lifecycleItem.
function Creature(id){
self = this;
this.lifecycle = {};
this._cid = id;
this.lifeInterval = setInterval(function(){
_.each(self.lifecycle,function(lifecycleItem){
if (lifecycleItem.active) { lifecycleItem.execute() };
});
},1000);
}
Creature.prototype.run = function() {
self = this;
this.lifecycle.run = {
active : true,
execute : function(){
console.log(self.cid + " is running");
}
}
};
如果我尝试创建一个名为SampleBioter的新变量,并执行其方法run():
在控制台中显示一条消息:
1正在运行
每秒钟重复一次。没关系
但若我添加了具有任何其他名称的新生物,控制台中的消息将停止重复,直到我再次对其中一个生物使用run()方法
另一个问题是,在第一个生物上执行run()方法会在另一个生物上停止执行
self
是全局的,而不是局部的。添加var
,这样它们就不会相互覆盖
self = this;
需要
var self = this;
self
是全局的,而不是本地的。添加var
,这样它们就不会相互覆盖
self = this;
需要
var self = this;
self
是全局的,而不是本地的。添加var
,这样它们就不会相互覆盖
self = this;
需要
var self = this;
self
是全局的,而不是本地的。添加var
,这样它们就不会相互覆盖
self = this;
需要
var self = this;
谢谢,这很有帮助。我必须阅读更多关于全局变量和局部变量及其用法的信息。谢谢,这很有帮助。我必须阅读更多关于全局变量和局部变量及其用法的信息。谢谢,这很有帮助。我必须阅读更多关于全局变量和局部变量及其用法的信息。谢谢,这很有帮助。我必须阅读更多关于全局变量和局部变量及其用法的内容。