我正在迭代一个对象并将属性名称与给定参数进行比较;如果匹配,我希望执行属性函数。除了明确之外,我该如何调用它?
对象:
@headers =
'foo': (obj)->
# do stuff
例程:
resolve: ('foo', item, obj)->
for prop of @headers
if prop == arguments[0]
# execute obj's foo property
答案 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]?()