如何遍历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中可以使用在构造。
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对象的属性?
相关文章:
- 在Javascript服务器/客户端中共享对象定义
- 高级布线和单个对象定义
- Javascript 对象定义
- 是否可以为数组中的每个对象定义事件侦听器
- 如何在多个文件中拆分 JavaScript 对象定义
- 将对象定义为仅包含特定类型的元素
- 如何在 javascript 中为 dom 对象定义函数
- 您可以在 JavaScript 中的私有方法中访问对象定义的属性吗?
- 在 ecma-script-6 中将对象定义为常量
- 在 JavaScript 中使用对象定义局部变量
- 如何在 JS 对象定义中引用字段
- 属性的对象定义属性设置器
- Three.js对象定义未定义
- 对象定义有两种方式-有什么区别
- JavaScript-如何在对象定义中定义属性
- 对象定义中的方括号表示法
- 仅为{..}对象定义原型
- 在对象定义中的javascript Repeating属性中(在大括号内).这是个错误吗
- 特殊的JavaScript结构:对象定义中的对象类型变量
- 在javascript对象定义中连接字符串