检查对象是否具有特定键的最可靠方法是:
Object.prototype.hasOwnProperty.call(obj, key)
这提供了一定的保证:如果 key
是 obj
的direct 属性,它只会评估为 true
,即使 obj
没有通常的 Object
作为其原型(prototype)(例如,如果它是用 const obj = Object.create 创建的) (null)
).
但这是一口。
在 ES6 或更高版本中是否有任何新的语法/方法(包括 polyfillable 或 Babel 可编译的“建议”)提供相同的保证,但以更好、更易读的方式?
最佳答案
我不知道这有什么语法糖。但是你不需要经常使用它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 .
关于javascript - 除了执行 Object.prototype.hasOwnProperty.call(obj, key) 是否有 ES6+ 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45215727/