如何使用 for 循环调用对象内所有方法内的所有函数?

How do you use a for loop to call all functions inside all methods inside an object?

我有一个叫 'updater' 的计时器,每秒运行一次。我还有一个对象 'particleFunctions',它的方法中包含多个函数。我希望 'particleFunctions' 中的所有 'update' 函数每秒执行一次。

理想情况下,我希望 console.log 每秒输出此消息:

0
1
2

var updater = setInterval(createParticles, 1000);

var particleFunctions = {
    particle0 : function(i){
        this.update = function(i){
            console.log(i);
        }
    },
    particle1 : function(i){
        this.update = function(i){
            console.log(i);
        }
    },
    particle2 : function(i){
        this.update = function(i){
            console.log(i);
        }
    }
}

function createParticles(){
    for (var i = 0; i < Object.keys(particleFunctions).length; i++){
        particleFunctions['particle' + i].update(i);
    }
}

不确定要在哪里调用 i,但像这样的方法就可以了:

var particleFunctions = {
        particle0 : function(i){
            this.update = function(){
                console.log(i);
            }
            return this;
        },
        particle1 : function(i){
            this.update = function(){
                console.log(i);
            }
            return this;
        },
        particle2 : function(i){
            this.update = function(){
                console.log(i);
            }
            return this;
        }
    }
    
    function createParticles(){
        for (var i = 0; i < Object.keys(particleFunctions).length - 1; i++){
            particleFunctions['particle' + i](i).update();
        }
    }
    
    var updater = setInterval(createParticles, 1000);

主要问题是particleFunctions['particle' + i] returns一个函数,所以你必须调用它才能顺序调用update

此外,您的 Object.keys(particleFunctions).length 给出的索引超出范围,因此我添加了 - 1 用于检查