Javascript——Object.prototype.hasOwnProperty()
2086 ワード
JavascriptのObjectオブジェクトプロトタイプ上のhasOwnProperty()は、プロトタイプチェーンから継承するのではなく、オブジェクト自体に定義されている属性を判断するために使用されます.
検出する属性文字列名または
JavascriptはhasOwnPropertyを敏感語としていないため、オブジェクトの属性の1つをhasOwnPropertyと命名する可能性が高いため、オブジェクトのプロトタイプのhasOwnPropertyメソッドを使用して属性がプロトタイプチェーンから来ているかどうかを判断することはできません.
MDN
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