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;

谢谢,这很有帮助。我必须阅读更多关于全局变量和局部变量及其用法的信息。谢谢,这很有帮助。我必须阅读更多关于全局变量和局部变量及其用法的信息。谢谢,这很有帮助。我必须阅读更多关于全局变量和局部变量及其用法的信息。谢谢,这很有帮助。我必须阅读更多关于全局变量和局部变量及其用法的内容。