JavaScript:hasOwnProperty 与点语法

JavaScript: hasOwnProperty vs dot syntax

假设有一个对象:foo = {"bar": 1}

使用 hasOwnProperty 而不是点语法来检查 foo 对象中的 bar 属性 是否有任何好处:

if (foo.hasOwnProperty('bar') {
  // do something
}

if (foo.bar) {
  // do something
}

另外:

看看这个例子,

Object.prototype.baz = 100;
var foo = {"bar": 1}

// will be false because in foo object there is no baz property 
// hasOwnProperty checks that the object has the specified property 
// and does not check that property in the prototype chain
if (foo.hasOwnProperty('baz')) {
  console.log('foo.hasOwnProperty("baz")');
}


//  will be true because baz property will be found 
//  in parent object through prototype chain
if (foo.baz) {
  console.log('foo.baz');
}