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

时间:2014-11-08 07:13:17

标签: javascript json

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

  

if(object.hasOwnProperty(key)){/ * do this * /}

OR

  

if(object [key]){/ * do this * /}

假设我们永远不会object = { key: false }; 使用一个而不是另一个的权衡是什么?

1 个答案:

答案 0 :(得分:3)

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

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

那么,使用哪一个取决于你想要的结果。

使用hasOwnProperty属性查看简单演示:http://jsfiddle.net/jfriend00/6zhv87rk/,它位于对象的原型上。


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

当您不关心此类冲突时,通常会使用object[key],因为您知道对象上将包含哪些类型的密钥,并且您知道它们不会发生冲突,因为此版本只是更短的更容易阅读。

相关问题