JavaScript:hasOwnProperty 与点语法
JavaScript: hasOwnProperty vs dot syntax
假设有一个对象:foo = {"bar": 1}
使用 hasOwnProperty
而不是点语法来检查 foo
对象中的 bar
属性 是否有任何好处:
if (foo.hasOwnProperty('bar') {
// do something
}
对
if (foo.bar) {
// do something
}
另外:
- 如果
foo["bar"]
是 undefined
会发生什么?
- 如果
foo
undefined
会怎样?
看看这个例子,
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');
}
假设有一个对象:foo = {"bar": 1}
使用 hasOwnProperty
而不是点语法来检查 foo
对象中的 bar
属性 是否有任何好处:
if (foo.hasOwnProperty('bar') {
// do something
}
对
if (foo.bar) {
// do something
}
另外:
- 如果
foo["bar"]
是undefined
会发生什么? - 如果
foo
undefined
会怎样?
看看这个例子,
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');
}