循环中运行对象属性函数

时间:2013-10-29 19:02:42

标签: javascript function object coffeescript javascript-objects

我正在迭代一个对象并将属性名称与给定参数进行比较;如果匹配,我希望执行属性函数。除了明确之外,我该如何调用它?

对象:

@headers =
   'foo': (obj)->
       # do stuff

例程:

resolve: ('foo', item, obj)->
   for prop of @headers
      if prop == arguments[0]
         # execute obj's foo property

1 个答案:

答案 0 :(得分:1)

好吧,你需要命名第一个参数,因为CoffeeScript不希望字符串存​​在。

但是,如果我理解正确,您可以在{{3}之后使用?存在”运算符(在Operators and Aliases的子部分中记录) }:

resolve: (prop, item, obj)->
   if @headers[prop]?
      obj[prop]()

这将编译为:

resolve: function(prop, item, obj) {
  if (this.headers[prop] != null) {
    return obj[prop]();
  }
}

而且,如果你想在obj上测试方法,可以在成员运算符和参数/调用括号之间放置?

obj[prop]?()