ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript はインスタンス属性とプロトタイプ属性を検出します_JavaScript のヒント

JavaScript はインスタンス属性とプロトタイプ属性を検出します_JavaScript のヒント

WBOY
WBOYオリジナル
2016-05-16 16:16:021034ブラウズ

0.前提条件

JavaScript オブジェクトのプロパティは、インスタンス内に存在するものと、プロトタイプ オブジェクト内に存在するものの 2 つの形式に分けられます。

上記によれば、属性を検出すると 4 つの状況が発生します

インスタンスまたはプロトタイプ オブジェクトに存在しません
インスタンスには存在しますが、プロトタイプ オブジェクトには存在しません
インスタンスには存在せず、プロトタイプ オブジェクトに存在します
インスタンスとプロトタイプ オブジェクトの両方に存在します

1.hasOwnPrototype()

hasOwnPrototype() は文字列形式でプロパティ名を受け取り、そのプロパティがインスタンス自体に存在する場合 (ケース 2/ケース 4)、true を返します。それ以外の場合は false (ケース 1/ケース 3) を返します。

コードをコピーします コードは次のとおりです:

functino 人() {}
Person.prototype.name = 'apple';
var person1 = 新しい人();
var person2 = 新しい人();
person1.name = 'バナナ';
console.log(person1.hasOwnPrototype(name)); //true
console.log(person2.hasOwnPrototype(name)); //false

2.in 演算子

in 演算子は、属性がインスタンス自体に存在するかプロトタイプ オブジェクトに存在するかに関係なく true (ケース 2/ケース 3/ケース 4) を返します。それ以外の場合は false (ケース 1) を返します。

コードをコピーします コードは次のとおりです:

console.log(person1 の 'name') //true
console.log(person2 の 'name') //true

3. プロトタイプ属性の存在を検出します

in 演算子および hasOwnProperty() と組み合わせると、関数をカスタマイズして、指定されたプロパティがプロトタイプに存在するかどうかを検出できます。

コードをコピーします コードは次のとおりです:

function hasPrototypeProperty(object, name) {
Return !object.hasOwnPrototype(name) && (オブジェクト内の名前);
}
console.log(hasPrototypeProperty(person1, 'name')); //false
console.log(hasPrototypeProperty(person2, 'name')); //true

指定された属性がプロトタイプに存在する場合は true (ケース 3) を返し、それ以外の場合は false (ケース 1/ケース 2/ケース 4) を返します。

上記がこの記事の全内容です。皆さんに気に入っていただければ幸いです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。