检查对象是否具有某个密钥的最安全的方法是:
Object.prototype.hasOwnProperty.call(obj, key)
这提供了一定的保证:如果true
是key
的直接属性,它只会评估为obj
,即使{{{}}也会有效1}}没有通常的obj
作为其原型(例如,如果它是使用Object
创建的)。
但它是满口的。
ES6或更高版本中是否有任何新的语法/方法(包括可填充或可编辑的Babel)可以提供相同的保证,但是更好,更易读?
答案 0 :(得分:5)
我不知道任何语法糖。但你不应该经常使用这个 1 ,所以偶尔写出来也不应该太糟糕。 equivalent shorter version将是
({}).hasOwnProperty.call(obj, key)
如果你真的需要更频繁地使用它,只需定义辅助函数:
const hasOwn = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key);
const hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty);
1:在大多数情况下,您可以省略检查,改为使用in
,或使用Map
并使用舒适的has
method。 < / p>