hasOwnProperty这个方法可以用来检测一个对象是否含有特定的自身属性,即是用来判断一个属性是定义在对象本身而不是继承自原型链的,
obj.hasOwnProperty(prop);
在JavaScript中没有将hasOwnProperty设置为关键词,所以就会出现设置hasOwnProperty为函数名的情况
var foo= {
hasOwnProperty = function () {
return false;
},
bar: 'Here be dragons'
}
那么在使用foo.hasOwnProperty(‘bar’)
时,始终是返回false
于是就可以用以下这种方式来解决这个问题(使用原型链上真正的hasOwnProperty()
方法)
// 如果担心这种情况,可以直接使用原型链上真正的 hasOwnProperty 方法
({}).hasOwnProperty.call(foo, 'bar'); // true
// 也可以使用 Object 原型上的 hasOwnProperty 属性
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true