ホームページ >ウェブフロントエンド >jsチュートリアル >Javascriptプログラミングにおける継承例まとめ_JavaScriptスキル

Javascriptプログラミングにおける継承例まとめ_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 15:29:181048ブラウズ

この記事の例では、JavaScript プログラミングの継承について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

この文章は「JavaScript 王の帰還」を読んだ後の要約です。記事の詳細な章は第 21 章 P537 にあります

継承は通常、次の 3 つのレベルの意味を実装します。

1) サブクラスのインスタンスは親クラスのメソッドを共有できます。 2) サブクラスは親クラスのメソッドをオーバーライドしたり、新しいメソッドを拡張したりできます。 3) サブクラスと親クラスは両方ともサブクラス インスタンスのタイプです。

1. 構造継承方法

サブクラスは親クラスのコンストラクターを呼び出してそれを維持します。この継承メソッドは多重継承を実現できますが、継承できるのは親クラスの共通メソッドのみであり、静的メソッドは継承できず、instanceof を使用して検証することはできません。実例。

function a(){
  this.say=function(){
  alert("happy new year!");
  }
}
function b(){
  a.apply(this,arguments);
}
a.prototype.fuck=function(){
  alert("%^&%^&%&^%&");
}
var oB=new b();
alert(oB instanceof a);// false
oB.say();       // happy new year
oB.fuck();       // 读不到

2. プロトタイプ継承/クラシック継承

この継承メソッドは、既存のプロトタイプ オブジェクトをコピーすることで動作の再利用を実現し、オブジェクト インスタンスがプロトタイプ オブジェクトのプロパティを共有できるようにします。多重継承をサポートし、プロトタイプの静的メソッドを継承し、instanceof を使用してインスタンスを検証できます。

function a(){
 this.say=function(){
 alert("happy new year!");
 }
}
function b(){}
a.prototype.fuck=function(){
  alert("%^&%^&%&^%&");
}
a.prototype.z=123;
b.prototype=new a();
var oB=new b();
alert(oB instanceof a); // true
alert(oB.z);      // 123
oB.say();        // happy new year
oB.fuck();       // %^&%^&%&^%&

3. インスタンスの継承/寄生コンストラクター パターン

構築メソッドはその型の静的メソッドを継承できず、プロトタイプの継承は不完全です (一部のコア オブジェクトの列挙不可能なメソッドは継承できません)。一方、インスタンス継承メソッドはネイティブ コア オブジェクトまたは DOM オブジェクトを継承できます。継承はオブジェクトを構築して返すことによって実装されるため、instanceof 検証は false になり、多重継承はサポートされません。

function a(){
 var oA=new Array();
 oA.say=function(){
   alert("hello A!");
 }
 return oA;
}
var obj=new a();
alert(obj instanceof a); // false
obj.say();

4. 継承メソッドのコピー

このメソッドは、基本クラス オブジェクトの列挙可能なすべてのプロパティとメソッドをコピーすることで継承をシミュレートするため、多重継承をシミュレートできますが、列挙できないものは親クラスの静的メソッドを継承できません。 >

function a(){
  this.num=123;
  this.say=function(){
  alert("happy new year!");
  }
}
function b(){
  this.extends=function(obj){
    for(each in obj){
      this[each]=obj[each];
    }
  }
}
var oB=new b();
oB.extends(new a());
alert(oB instanceof a); // false
alert(oB.num);     // 123
oB.say();        // happy new year

5. 混合継承方式

名前が示すように、上記の継承方法を組み合わせて、互いの長所を学び、継承をより完璧にすることです。一般的なものには、構造プロトタイプ継承、つまり擬似古典継承が含まれます。

function a(){
  this.num=123;
  this.say=function(){
  alert("happy new year!");
  }
}
function b(){
  a.apply(this);
}
b.prototype=new a();
b.prototype.z=123;
var oB=new b();
alert(oB instanceof a); // true
alert(oB.num);     // 123
oB.say();        // happy new year

6. 各種相続法のメリットとデメリット

この記事が JavaScript プログラミングのすべての人に役立つことを願っています。

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