如何遍历javascript对象中定义的函数

时间:2015-08-01 00:31:59

标签: javascript

我有一个对象定义了一堆这样的函数:

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

我想编写一个函数来调用此对象中定义的所有函数,而不必知道函数的名称或函数的数量。这可能吗?

3 个答案:

答案 0 :(得分:1)

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

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

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

您可能想要检查该属性实际上是一个函数。

答案 1 :(得分:0)

您可以先使用for-in loop浏览每个对象属性,然后执行此操作。然后,在检查该值是否为函数后,您可以调用它。

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

答案 2 :(得分:0)

您可以根据需要使用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中对象枚举的更一般比较,请参阅此问题How do I enumerate the properties of a JavaScript object?