1. 程式人生 > >Javascript——Object.prototype.hasOwnProperty()

Javascript——Object.prototype.hasOwnProperty()

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

MDN