いわゆる寄生複合遺伝、即ち、次のように、原型継承継承されたメソッドによって、コンストラクタにプロパティを継承します。
関数inheritPrototype(サブ、SUP){ VARプロトタイプ= Object.create(sup.prototype)。 prototype.constructor = 副。 sub.prototype = プロトタイプ。 }
最初のステップは、スーパータイプのプロトタイプのコピーを作成することである、第2のステップは、デフォルトコンストラクタのプロパティを書き換えるプロトタイプの損失を補うためにある、第3のステップは、サブタイプのプロトタイプにコピーをコピーすることです。
例えば、それを呼び出す方法を試してくださいするには:
関数スーパー(名前){ この .nameの= 名前。 この .colors = [ "赤"、 "青"、 "黄" ]。 } Super.prototype.sayName = 関数(){ にconsole.log(この.nameの)。 } 関数のサブ(名){ Super.call(この名前); } inheritPrototype(SUB、スーパー)。
端的に言えば、それは寄生組み合わせ継承コンストラクタ+プロトタイプスタイルの継承を借りることですが、送信の対象方法で原型継承はオブジェクトそのものではなく、プロトタイプオブジェクトではありません。