5。寄生性継承
寄生コンストラクターや工場パターンと同様に、継承プロセスをカプセル化するためにのみ使用される関数を作成し、何らかの方法でオブジェクトを内部的に強化し、最終的にオブジェクトを返します。
function createanother(original){var clone = object.create(original); // function clone.sayhi = function(){//このオブジェクトを何らかの方法で強化する( "hi"); };クローンを返します。 //このオブジェクトを返します} var person = {name: "bob"、friends:["shelby"、 "court"、 "van"]};別の人。sayhi();上記の例では、createan other関数はパラメーター、つまり新しいオブジェクトの基礎として使用されるオブジェクトを受信します。
別の人は、人に基づいて作成された新しいオブジェクトです。新しいオブジェクトには、人のすべてのプロパティと方法だけでなく、独自のSayhi()メソッドもあります。
6.寄生的な組み合わせ継承
併用継承は、JSで最も一般的に使用される継承パターンです。組み合わせ継承の最大の問題は、コンストラクターがいずれにせよ、サブタイプのプロトタイプを作成するときに1回、サブタイプコンストラクター内のその他の場合は2回呼び出されることです。
function supertype(name){this.name = name; this.colors = ["red"、 "blue"、 "green"];} supertype.prototype.sayname = function(){alert(this.name);} function subtype(name、age){supertype.call(this、name); // supertype()this.age = age;} subtype.prototype = new SuperType()への2番目の呼び出し。 // supertype()subtype.prototype.sayage = function(){alert(this.age);}への最初の呼び出しSuperTypeコンストラクターが初めて呼び出されると、SubType.Prototypeは2つのプロパティを取得します。名前と色。どちらもスーパータイプのインスタンス特性ですが、現在はサブタイプのプロトタイプにあります。
サブタイプコンストラクターが呼び出されると、スーパータイプコンストラクターが再び呼び出され、今回はインスタンス属性名と色が新しいオブジェクトに作成されます。
したがって、これら2つの属性は、プロトタイプの同じ名前の2つの属性をブロックします。
寄生的な組み合わせ継承は、この問題を解決することです。
コンストラクターを借用することにより、属性を継承します。
プロトタイプチェーンを介してメソッドを継承します。
サブタイプのプロトタイプを指定するために、SuperTypeコンストラクターを呼び出す必要はありません。
function EnseritPrototype(subtype、superType){var prototype = object.create(supertype.prototype); // Object Prototype.Constructor = subtypeを作成します。 // Object Subtype.Prototype = Prototype; //オブジェクトを指定}関数supertype(name){this.name = name; this.colors = ["red"、 "blue"、 "green"];} supertype.prototype.sayname = function(){alert(this.name);} function subtype(name、age){supertype.call(this、name); // superType()this.age = age;} envensitprototype(subtype、supertype)subtype.prototype.sayage = function(){alert(this.age);} var instance = new subtype( "bob"、18); inst.sayname(); instance.sayage();継承プロトタイプ関数は、サブタイプコンストラクターとスーパータイプコンストラクターの2つのパラメーターを受信します。
1. SuperTypeプロトタイプのコピーを作成します。
2。作成されたコピーにコンストラクター属性を追加して、プロトタイプの書き換えにより失われたデフォルトのコンストラクター属性を補うために作成します。
3.新しく作成されたオブジェクト(コピー)をサブタイプのプロトタイプに割り当てます。このメソッドは、SuperTypeコンストラクターを1回だけ呼び出し、InstanceOFとISPrototypeof()も正常に使用できます。
上記の記事では、JS相続_PARASITICの相続と寄生虫の組み合わせ継承について、私があなたと共有するすべてのコンテンツについて簡単に説明しています。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。