ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptプロトタイプチェーン継承方式の使い方とデメリットを詳しく解説

JavaScriptプロトタイプチェーン継承方式の使い方とデメリットを詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-07-20 15:28:503131ブラウズ

プロトタイプ チェーン メソッド

function Person(){
     this.name = 'Simon';
}
Person.prototype.say = function(){
     alert('My name is '+this.name);
}
function F2E(id){
     this.id = id;
     this.showId = function(){
          alert('Good morning,Sir,My work number is '+this.id);
     }
}
F2E.prototype = new Person();

var simon = new F2E(9527);
simon.say();
simon.showId();
alert(simon.hasOwnProperty('id')); //检查是否为自身属性

次に、上記の例に従って、次の JS プロトタイプ チェーンの概念を理解します:

プロトタイプ チェーンは次のように理解できます: js の各オブジェクトには、隠された __proto__ 属性、インスタンス化されたオブジェクトがあります __proto__ 属性は、そのクラスのプロトタイプ メソッドを指し、このプロトタイプ メソッドは、インスタンス化された別のオブジェクトに割り当てることができます。これにより、チェーンが形成されます。これが、前のコードです。キー。 js オブジェクトが特定の属性を読み取るとき、まず独自の属性を検索します。属性がない場合は、プロトタイプ チェーン上のオブジェクトの属性を検索します。つまり、プロトタイプチェーン方式を共有できるため、オブジェクトの偽装やメモリの浪費の問題が解決されます。

欠点について話しましょう:

欠点は明らかです。プロトタイプ チェーンの継承は、サブクラスをインスタンス化するときにパラメーターを親クラスに渡すことができないことを意味します。そのため、この例では関数 Person() にはパラメーターがありません。 Thereason for this.name="Simon" として直接書かれています。以下のコードでは期待通りの結果が得られません:

F2E.prototype = new Person()
最後に、メンバー変数はオブジェクト偽装を使用し、メンバーメソッドはプロトタイプチェーニングを使用する、より良いと思われる継承実装方法をまとめます。 コードは次のとおりです。

以上がJavaScriptプロトタイプチェーン継承方式の使い方とデメリットを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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