gpt4 book ai didi

javascript - 为什么setInterval添加的函数停止执行?

转载 作者:行者123 更新时间:2023-11-28 19:16:06 29 4
gpt4 key购买 nike

我有代码:

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");
}
}
};

如果我尝试创建名为 exampleCreature 的新变量,并执行其方法 run():

var sampleCreature = new Creautre(1);
sampleCreature.run();

控制台中出现一条消息:

1 is running

每秒重复一次。没关系。

但是,如果我添加具有任何其他名称的新生物 - 控制台中的消息将停止重复,直到我再次对其中一个生物使用 run() 方法。

另一个问题 - 在第一个生物上执行 run() 方法会停止在其他生物上执行该方法。

最佳答案

self 是全局的而不是本地的。添加 var 这样它们就不会互相覆盖。

self = this;

需要

var self = this;

关于javascript - 为什么setInterval添加的函数停止执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29798367/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com