如何使用 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
用于检查
我有一个叫 '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
用于检查