0。前提条件
JavaScriptオブジェクトの特性は、2つの形式の存在に分かれています。 1つは存在インスタンスであり、もう1つはプロトタイプオブジェクトの存在です。
上記によると、属性を検出すると4つの状況があります
例でもプロトタイプオブジェクトでもありません
例では、プロトタイプオブジェクトには存在しません
例では、プロトタイプオブジェクトに存在します
両方のインスタンスとプロトタイプオブジェクトに存在します
1.HasownPrototype()
hasownPrototype()は、文字列形式のプロパティ名を受け入れ、インスタンス自体にこのプロパティがある場合にtrueを返します(ケース2/ケース4)。それ以外の場合は、falseを返します(ケース1/ケース3)。
コードコピーは次のとおりです。
funtino person(){}
person.prototype.name = 'apple';
var person1 = new Person();
var person2 = new Person();
person1.name = 'banana';
console.log(person1.hasownprototype(name)); //真実
console.log(person2.hasownprototype(name)); //間違い
2.オペレーター
in operatorは、インスタンス自体またはプロトタイプオブジェクトに属性が存在するかどうかに関係なくtrueを返します(ケース2/ケース3/ケース4)。それ以外の場合は、false(ケース1)を返します。
コードコピーは次のとおりです。
console.log( 'name' in person1); //真実
console.log( 'name' in person2); //真実
3.プロトタイプのプロパティを検出します
in operatorとhasownProperty()を組み合わせると、関数をカスタマイズして、特定の属性がプロトタイプに存在するかどうかを検出できます。
コードコピーは次のとおりです。
関数hasprototypeproperty(object、name){
return!object.hasownPrototype(name)&&(name in object);
}
console.log(hasprototypeproperty(person1、 'name')); // false
console.log(hasprototypeproperty(person2、 'name')); // true
指定された属性はプロトタイプに存在し、trueを返します(ケース3)。それ以外の場合、false(ケース1/ケース2/ケース4)。
上記は、この記事のコンテンツ全体です。気に入っていただければ幸いです