Javascript——Object.prototype.hasOwnProperty()

2086 ワード

JavascriptのObjectオブジェクトプロトタイプ上のhasOwnProperty()は、プロトタイプチェーンから継承するのではなく、オブジェクト自体に定義されている属性を判断するために使用されます.
obj.hasOwnProperty(prop)

パラメータprop


検出する属性文字列名またはSymbol(ES 6)
o = new Object();
o.prop = 'exists';
o.hasOwnProperty('prop');             //    true
o.hasOwnProperty('toString');         //    false
o.hasOwnProperty('hasOwnProperty');   //    false

hasOwnPropertyをオブジェクトのプロパティ名として使用する


JavascriptはhasOwnPropertyを敏感語としていないため、オブジェクトの属性の1つを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