Javascript——Object.prototype.hasOwnProperty()
阿新 • • 發佈:2019-01-01
Javascript中Object物件原型上的hasOwnProperty()用來判斷一個屬性是定義在物件本身而不是繼承自原型鏈。
obj.hasOwnProperty(prop)
引數 prop
要檢測的屬性 字串 名稱或者 Symbol
(ES6)
o = new Object();
o.prop = 'exists';
o.hasOwnProperty('prop'); // 返回 true
o.hasOwnProperty('toString'); // 返回 false
o.hasOwnProperty('hasOwnProperty'); // 返回 false
使用hasOwnProperty作為某個物件的屬性名
因為javascript沒有將hasOwnProperty作為一個敏感詞,所以我們很有可能將物件的一個屬性命名為hasOwnProperty,這樣一來就無法再使用物件原型的 hasOwnProperty 方法來判斷屬性是否是來自原型鏈。
var foo = {
hasOwnProperty: function() {
return false;
},
bar: 'Here be dragons'
};
foo.hasOwnProperty('bar'); // 始終返回 false
不能使用 該物件.hasOwnProperty
這種方法,怎麼來解決這個問題呢?我們需要使用原型鏈上真正的 hasOwnProperty 方法:
({}).hasOwnProperty.call(foo, 'bar'); // true
// 或者:
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true