両方のプロパティはobject.prototype:object.prototype.hasownproperty()およびobject.prototype.ispropertyof()によって提供されます。
まず、hasownProperty()メソッドと使用について説明します。 ISPropertyof()の方法と使用を説明します
これらを理解する少なくともあなたはプロトタイプチェーンを理解する必要があります
1。object.prototype.hasownproperty()
概要
hasownProperty()メソッドは、オブジェクトに指定されたプロパティが含まれているかどうかを判断するために使用されます
文法
obj.hasownproperty( "プロパティ名"); //インスタンスobjに括弧内のプロパティが含まれているかどうか、それが真である場合、そうでなければそれはfalseです
説明する
Object.prototypeを継承するすべてのオブジェクトは、プロトタイプチェーンからHasownPropertyメソッドに継承されます。この方法は、オブジェクトに特定のプロパティが含まれているかどうかを検出します。とは異なり、この方法は、プロトタイプチェーンから継承されたプロパティを無視します。
例
1. hasownProperty()メソッドを使用して、オブジェクトに特定のプロパティが含まれているかどうかを判断します
次の例では、オブジェクトOに独自の属性プロップが含まれているかどうかを検出します。
var o = new object(); o.prop = "exists"; function change(){o.newprop = o.prop; delete o.prop;} o.hasownproperty( "prop")// truechange()// o.hasownproperty( "prop")// false defy(存在しません2。あなた自身の属性と継承された属性の違い
次の列は、hasownProperty()メソッドの違いを示しています。
var o = new object(); o.prop = "exists"; o.hasownproperty( "prop"); // true独自の属性o.hasownproperty( "toString"); //オブジェクトプロトタイプO.hasownproperty( "hasownproperty");
3。プロトタイプチェーンを変更した後、hasownProperty()のポインティング例は
次の列は、プロトタイプチェーンを変更した後の継承特性のhasownProperty()メソッドの違いを示しています。
var o = {name: 'jim'}; function person(){this.age = 19;} person.prototype = o; //人のプロトタイプを変更してp.hasownproperty( "name"); //相続名を判断できない属性p.hasownproperty( "age"); // true;4. hasownProperty()を使用して、オブジェクト自体のプロパティを横断します
次の列は、オブジェクトを横断しながら継承された属性を無視し、独自の属性を取得する方法を示しています。
注Obsin forinは、オブジェクト継承の列挙可能特性を横断します
var o = {gender: 'ma'} function person(){this.name = "zhang san"; this.age = 19;} person.prototype = o; var p = new person();他の場所: "+k); //ジェンダー}}5。HasownPropertyメソッドが上書きされる場合があります
オブジェクトに独自のhasownProperty()メソッドがある場合、プロトタイプチェーンのhasownProperty()メソッドが上書きされます
var o = {gender: 'male'、hasownproperty:function(){return false;}} o.hasownproperty( "gender"); // falseを返す//ソリューションメソッドを使用して、呼び出しを使用します。方法({})。hasownProperty.call(o、 'gender'); // trueObject.prototype.hasownproperty.call(o、 'gender'); // true2。object.prototype.isprototypeof()
概要
ISPrototypeof()メソッドテスト別のオブジェクトのプロトタイプチェーンにオブジェクトが存在するかどうか
文法
// object1はobject2のプロトタイプですか?つまり、Object2はObject1のプロトタイプです。もしそうなら、それはtrueを返し、それ以外の場合はfalseobject1.isprototypeof(object2);
説明する
ISPrototypeof()メソッドでは、別のオブジェクトのプロトタイプチェーンにオブジェクトが存在するかどうかを確認できます。
例
1。ISPrototypeof()を使用して、オブジェクトが別のオブジェクトのプロトタイプに存在するかどうかを確認します
var o = {}; function person(){}; var p1 = new person(); //元のプロトタイプから継承されましたが、今ではperson.prototype = o; var p2 = new person(); // oconsole.log(o.isprototypeof(p1)); console.log(o.isprototypeof(p2)); // trueはp2のプロトタイプです2。ISPROPERTYOF()を使用して、オブジェクトが別のオブジェクトのプロトタイプチェーンに存在するかどうかを確認します
var o = {}; function person(){}; var p1 = new person(); //元のプロトタイプから継承されましたが、今ではperson.prototype = o; var p2 = new person(); // oconsole.log(o.isprototypeof(p1)); console.log(o.isprototypeof(p2)); // true oはp2 console.log(object.prototype.isprototypeof(p1)); // trueconsole.logのプロトタイプですp1のプロトタイプチェーン構造はp1 =>元のperson.prototype => object.prototype => nullです
p2のプロトタイプチェーン構造はp2 => o => object.prototype => nullです
P1とP2の両方がobject.prototypeを持っているので、両方ともオブジェクトのプロトタイプチェーンにあります。プロトタイプ
3。概要
1.HasownProperty:オブジェクトに名前を付けたプロパティまたはオブジェクトがあるかどうかを判断するために使用されます。ただし、この方法では、オブジェクトのプロトタイプチェーンにこのプロパティがあるかどうかを確認できないことに注意してください。これはオブジェクト自体のメンバーでなければなりません。
2。ISPrototypeofは、そのプロトタイプチェーンが指定されたオブジェクトインスタンスに存在するかどうかを確認するオブジェクトを決定するために使用されます。そうであれば、それは真実に戻り、それ以外の場合はfalseを返します。
上記は、編集者が紹介したJSのhasownProperty()およびisPrototypeof()属性の例の詳細な説明です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!