この記事の例では、JavaScript プログラミングの継承について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
この文章は「JavaScript 王の帰還」を読んだ後の要約です。記事の詳細な章は第 21 章 P537 にあります
。継承は通常、次の 3 つのレベルの意味を実装します。
1) サブクラスのインスタンスは親クラスのメソッドを共有できます。
2) サブクラスは親クラスのメソッドをオーバーライドしたり、新しいメソッドを拡張したりできます。
3) サブクラスと親クラスは両方ともサブクラス インスタンスのタイプです。
サブクラスは親クラスのコンストラクターを呼び出してそれを維持します。この継承メソッドは多重継承を実現できますが、継承できるのは親クラスの共通メソッドのみであり、静的メソッドは継承できず、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(); // 读不到
この継承メソッドは、既存のプロトタイプ オブジェクトをコピーすることで動作の再利用を実現し、オブジェクト インスタンスがプロトタイプ オブジェクトのプロパティを共有できるようにします。多重継承をサポートし、プロトタイプの静的メソッドを継承し、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(); // %^&%^&%&^%&
構築メソッドはその型の静的メソッドを継承できず、プロトタイプの継承は不完全です (一部のコア オブジェクトの列挙不可能なメソッドは継承できません)。一方、インスタンス継承メソッドはネイティブ コア オブジェクトまたは 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();
このメソッドは、基本クラス オブジェクトの列挙可能なすべてのプロパティとメソッドをコピーすることで継承をシミュレートするため、多重継承をシミュレートできますが、列挙できないものは親クラスの静的メソッドを継承できません。 >
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
名前が示すように、上記の継承方法を組み合わせて、互いの長所を学び、継承をより完璧にすることです。一般的なものには、構造プロトタイプ継承、つまり擬似古典継承が含まれます。
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
この記事が JavaScript プログラミングのすべての人に役立つことを願っています。