【问题标题】:Call each function in a literal object (Javascript)在文字对象中调用每个函数(Javascript)
【发布时间】:2011-06-19 01:56:32
【问题描述】:

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

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

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

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

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

谢谢大家!!!

【问题讨论】:

  • 如果只有javascript反射..

标签: javascript object iteration


【解决方案1】:
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]();
    }
}

【讨论】:

    【解决方案2】:

    Lopping 会给你它们的键,而不是值。使用key获取值:

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

    jsfiddle.net/s8tbr/

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

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

    【讨论】:

      猜你喜欢
      • 2012-02-15
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多