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

How to iterate through functions defined in a javascript object

本文关键字:对象 定义 函数 javascript 何遍历 遍历      更新时间:2023-09-26

我有一个对象,它定义了一堆函数,像这样:

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

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

在ECMAScript>=5.1中可以使用构造。

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对象的属性?