2011-02-01 87 views
2

如何调用此对象中的每个函数?在字面对象(Javascript)中调用每个函数

var obj = { 
    hey1: function() { 
    alert('hey'); 
    }, 
    hey2: function() { 
    alert('hey2'); 
    }, 
    hey3: function() { 
    alert('hey3'); 
    } 
} 

我希望每个函数都能一个接一个地运行。我正在寻找类似的东西:

for (var hey in obj) { 
    hey(); 
} 

但显然,不运行(否则我不会问这个问题)。

谢谢你们!

+0

如果只有javascript反射.. – jerluc 2011-02-01 06:34:43

回答

7
for (var hey in obj) { 
    obj[hey](); 
} 

在它不能保证每个属性将是一个功能的情况下,你可以淘汰其他属性:

for (var hey in obj) { 
    if (typeof obj[hey] == "function") { 
     obj[hey](); 
    } 
} 

为了进一步限制为仅对象的直接属性(和不是从它的原型继承而来的):

for (var hey in obj) { 
    if (typeof obj[hey] == "function" && obj.hasOwnProperty(hey)) { 
     obj[hey](); 
    } 
} 
2

截枝会给你他们的密钥,而不是值。使用键来获取值:

for (var hey in obj) { 
    obj[hey](); 
} 

jsfiddle.net/s8tbr/

注:根据从那里你得到的对象,你可能要检查的属性是对象本身的成员,而不是从继承原型:

for (var hey in obj) { 
    if (obj.hasOwnProperty(hey)) { 
    obj[hey](); 
    } 
} 
相关问题