【问题标题】:Test for presence of a property in CoffeeScript测试 CoffeeScript 中是否存在属性
【发布时间】:2014-07-01 23:17:56
【问题描述】:

在 JavaScript 中,我们可以使用 in operator 测试对象中是否存在命名属性:

var obj = { foo: 123, bar: 0 };
'foo' in obj; // => true
'bar' in obj; // => true, handy since "obj.bar" is falsey.
'gah' in obj; // => false

但是,在 CoffeeScript 中,in 运算符被重载以执行数组搜索(大概是为了防止滥用for...in),所以我们不能像上面那样使用它。相反,我们似乎必须在对象的键列表中对命名属性进行线性搜索:

obj = { foo: 123, bar: 0 }
'foo' in Object.keys(obj) # true, but O(n) search instead of likely O(1).

是否有更好(更高效、更简洁)的方法来测试 CoffeeScript 中对象中是否存在命名属性?

【问题讨论】:

    标签: coffeescript


    【解决方案1】:

    使用:

    obj ={foo:13}
    
    (foo of obj) == true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      相关资源
      最近更新 更多