// JS継承最も一般的-組み合わせ継承における 機能スーパー(名前){ この .nameの= 名; この .colors = [ "赤"、 "青"、 "緑" ]; } Super.prototype.sayName = 関数(){ にconsole.log(この.nameの); } 関数のサブ(名){ // 継承プロパティ Super.call(この名前); } // 継承されたメソッド Sub.prototype = 新しい新しいスーパー(); VAR = SUB1 新しい新しいサブ( "ニック" ); sub1.colors.push(「黒」)。 console.log(sub1.colors)。 // (4)、 "赤" "青"、 "緑"、 "黒"] sub1.sayName()。 // ニック するvar SUB2 = 新しいサブ( "ルーシー" ); console.log(sub2.colors)。 // (3) "赤"、 "青"、 "緑"] sub2.sayName()。 // ルーシー
コンストラクタのプロトタイプチェーンの欠陥を借り継承してことを回避するの組み合わせは、JSは、相続の最も一般的に使用されるモードになって、自分の長所を兼ね備えています。
// 返回的都是真 はconsole.log(SUB1 のinstanceof Object)を。 console.log(SUB1 のinstanceof スーパー)。 console.log(SUB1 のinstanceof SUB)。 console.log(Object.prototype.isPrototypeOf(SUB2))。 console.log(Super.prototype.isPrototypeOf(SUB2))。 console.log(Sub.prototype.isPrototypeOf(SUB2))。
そして、のinstanceofとisPrototypeOf()メソッドも正しく作成継承の組み合わせに基づいてオブジェクトを識別することができます。