2011-02-01 33 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](); 
    } 
} 
相關問題