在循环中运行对象属性函数

Running object property function in a loop

本文关键字:属性 函数 对象 运行 循环      更新时间:2023-09-26

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

对象:

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

例程:

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

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

但是,如果我理解正确,您可以在成员运算符之后使用?"存在"运算符(记录在运算符和别名的小节中):

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]?()