调用文字对象中的每个函数(Javascript)

时间:2011-02-01 06:31:52

标签: javascript object iteration

如何调用此对象中的每个函数?

var obj = {
  hey1: function() {
    alert('hey');
  },
  hey2: function() {
    alert('hey2');
  },
  hey3: function() {
    alert('hey3');
  }
}

我希望每个函数一个接一个地运行。我正在寻找类似的东西:

for (var hey in obj) {
  hey();
}

但显然没有运行(否则我不会问这个问题)。

谢谢你们!

2 个答案:

答案 0 :(得分:7)

for (var hey in obj) {
    obj[hey]();
}

在无法保证每个属性都是函数的情况下,您可以清除其他属性:

for (var hey in obj) {
    if (typeof obj[hey] == "function") {
        obj[hey]();
    }
}

进一步将其限制为仅对象的直接属性(而不是从其原型继承的属性):

for (var hey in obj) {
    if (typeof obj[hey] == "function" && obj.hasOwnProperty(hey)) {
        obj[hey]();
    }
}

答案 1 :(得分:2)

Lopping会给你他们的钥匙,而不是价值。使用键获取值:

for (var hey in obj) {
  obj[hey]();
}

jsfiddle.net/s8tbr/

注意:根据获取对象的位置,您可能希望检查属性是否是对象本身的成员,而不是从原型继承:

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