1

我正在遍历一个对象并将属性名称与给定参数进行比较;如果匹配,我希望执行属性函数。除了明确地之外,我怎么称呼它?

物体:

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

例行公事:

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

1 回答 1

1

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

但是,如果我理解正确,您可以在成员运算符?之后使用“ existential ”运算符(记录在Operators 和 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]?()
于 2013-10-29T19:12:55.397 回答