[英]Is there a way to iterate through a javascript object's prototype variables and functions?
[英]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.