在CoffeeScript中测试是否存在属性

时间:2014-07-01 15:12:24

标签: coffeescript

在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中对象中是否存在命名属性?

1 个答案:

答案 0 :(得分:2)

使用:

obj ={foo:13}

(foo of obj) == true