obj.hasOwnProperty(key)vs使用obj[key]直接引用

obj.hasOwnProperty(key) vs directly referencing using obj[key]

本文关键字:obj key 引用 vs hasOwnProperty 使用      更新时间:2023-09-26

假设我想检查对象中是否存在属性。我研究了两种方法:

if(object.hasOwnProperty(key)){/*这样做*/}

如果(object[key]){/*这样做*/}

假设我们永远不会有object = { key: false };使用一个与另一个相比有什么权衡?

object[key]检查整个对象链,包括原型链。

object.hasOwnProperty(key)检查key属性是否直接分配给对象,并且不查看原型链。

因此,使用哪一个取决于您想要的结果。

请参阅使用hasOwnProperty属性的简单演示:http://jsfiddle.net/jfriend00/6zhv87rk/其在对象的原型上。


key可以是任意字符串,并且您希望绝对确保它不会与Object原型上的内置属性冲突时,通常会使用object.hasOwnProperty(key)。事实上,如果你真的想保护自己,你甚至可以使用这个Object.prototype.hasOwnProperty.call(object, key),这样即使是hasOwnProperty属性也可以用于你的对象。当您使用Javascript对象作为具有任意键值的哈希查找或字典类型对象时,就会出现类似的情况。

当你不关心这样的冲突时,你通常会使用object[key],因为你知道对象上会有什么类型的密钥,而且你知道它们不会冲突,因为这个版本更短,更容易阅读。