簡體   English   中英

如何遍歷javascript對象中定義的函數

[英]How to iterate through functions defined in a javascript object

我有一個對象,它定義了一堆這樣的功能:

myObject = {
  "item 1": function() {
    return "I'm item 1";
  },
  "item 2": function() {
    return "I'm item 2";
  }
};

我想編寫一個調用此對象中定義的所有功能的功能,而不必知道功能名稱或功能數量。 這可能嗎?

在ECMAScript> = 5.1中,您可以使用for .. in構造。

obj = {
    test : function() {
        console.log("test called");
    }
};

for(idx in obj) {
    obj[idx]();
}

您可能要檢查該屬性實際上是一個函數。

您可以通過以下方式執行此操作:首先使用for-in循環瀏覽每個對象屬性。 然后,在檢查值是否為函數之后,可以調用它。

for (var key in obj) {
  if (typeof obj[key] === 'function') {
    obj[key]();
  }
}

您可以根據需要使用Object.keys或for-in循環。

Object.keys(obj); // ==> ["item-1", "item-2"]
Object.keys(obj).forEach(function (key) {
    var fn = obj[key];
    fn();
});

// or with a for-in loop

for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
        obj[key]();
    }
}

使用Object.keys可以說更加清晰,但是for-in循環具有更好的瀏覽器兼容性和性能。 有關JavaScript中對象枚舉的更一般的比較,請參考此問題如何枚舉JavaScript對象的屬性?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM