2011-02-09 62 views
0

我的問題很容易理解。我有一個JSON對象(請參閱代碼),我將按照出現的順序自動調用此對象的所有函數。
如何在JSON對象上使用foreach調用javascript函數?

var installer = { 
    a : function() { 
      ... 
     } 
    b : function() { 
      ... 
     } 
}; 

for(var func in installer) { 
    fn.call(document); 
}; 

你知道爲什麼以前的代碼不起作用嗎?對不起,我是一名JavaScript初學者。

在此先感謝!

問候。

+0

你做**不**有一個JSON對象。你有一個正常的JS對象用對象字面值表示法定義:http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ – 2011-02-09 21:48:31

回答

0

您聲明var func通過的installer成員變量循環,但您使用fn.call(...)fn從哪裏來的?您可以:installer[func].call(document)而不是fn.call(document)

另外你在安裝程序對象中聲明的函數不帶任何參數,但是你傳遞的是document作爲參數。

[更新代碼,添加缺少.callinstaller[func](document)]

1

您沒有一個名爲fn的變量,並且在函數定義的末尾還缺少逗號。

此外,您的函數將不會按順序調用,因爲JavaScript將您的對象屬性任意排序。你可能想考慮使用一個數組,或者,正如我在下面所做的那樣,指定一個確定順序的數組。

var installer = { 
    a : function() { 
      ... 
     }, 
    b : function() { 
      ... 
     }, 
}; 

var order = [ "a", "b" ]; 

for(var i = 0; i < order.length; i++) { 
    installer[order[i]].call(document); 
} 
+0

我認爲文檔是HTML文檔,一個全局變量在桌面瀏覽器的JavaScript環境中可用 – 2011-02-09 21:47:12

+0

哦,錯過了 – rfw 2011-02-09 21:47:53

相關問題