【发布时间】: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