2。コンストラクターを借ります
プロトタイプに参照タイプの値を含めることによって引き起こされる問題を解決するために、bornedコンストラクター盗み(鍛造オブジェクトまたは古典的継承とも呼ばれます)と呼ばれる手法を使用します。
この手法の基本的なアイデア:サブクラスコンストラクター内のスーパータイプコンストラクターを呼び出します。
コンストラクターは、Apply()およびcall()メソッドを使用して、新しく作成されたサブクラスオブジェクトで実行できます。
関数supertype(){this.colors = ["red"、 "blue"、 "green"];} function suptype(){//継承supertype supertype.apply(this);} var instance1 = new subtype(); instance1.colors.push( "black"); alert(instance1.colors); //赤、青、緑、blackvar instance2 = new subtype(); alert(instance2.colors); //赤、青、緑上記の例では、SuperTypeコンストラクターは、実際に新しく作成されたサブタイプインスタンス(Instance1 Instance2)の環境で呼び出されます。これにより、SuperType()関数で定義されているすべてのオブジェクト初期化コードは、新しいサブタイプオブジェクトで実行されます。したがって、サブタイプの各インスタンスには、Colors属性の独自のコピーがあります。
パスパラメーター
プロトタイプチェーンの場合、コンストラクターの借入には大きな利点があります。つまり、サブタイプコンストラクターのスーパータイプコンストラクターのパラメーターを渡すことができます。
function supertype(name){this.name = name;} function subtype(){supertype.call(this、 "bob"); this.age = 18;} var instance1 = new subtype(); alert(instance1.age); //18Alert(instance1.name); //ボブコンストラクターを借りる問題:
方法はすべてコンストラクターで定義されているため、関数の再利用について話す方法はありません。さらに、スーパータイプのプロトタイプで定義されている方法もサブタイプには見えません。
3。組み合わせ継承
擬似古典的継承と呼ばれることもある組み合わせ継承は、プロトタイプチェーンの組み合わせとコンストラクターのテクニックを一緒に組み合わせることを指します。これは、両方の強みを果たす継承モードです。
プロトタイプチェーンを使用して、プロトタイプの特性と方法の継承を実装します。
インスタンスプロパティの継承は、コンストラクターを借用することによって達成されます。
このようにして、機能の再利用は、プロトタイプのメソッドを定義することで達成され、各インスタンスに独自の属性があることも保証できます。
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); this.age = age;} //継承方法subtype.prototype = new supertype(); subtype.prototype.sayage = function(){alert(this.age);} var instance1 = new subtype( "bob"、22); instance1.colors.push( "black"); alert(instance1.colors); //RED,BLUE、GREEN、BLACKENSTANCE1.SAYNAME(); //bobinstance1.sayage(); // 22var instance2 = new Subtype( "Alice"、21); alert(instance2.colors); //RED,BLUE、GREENINSTANCE2.SAYNAME(); //ALICEINSTANCE2.SAYAGE(); // 21この例では、SuperTypeコンストラクターは、名前と色の2つのプロパティを定義します。 SuperTypeのプロトタイプは、メソッドSaysName()を定義します。
サブタイプコンストラクターは、SuperTypeコンストラクターを呼び出すときに名前パラメーターを通過し、独自の属性年齢を定義します。次に、SuperTypeのインスタンスをサブタイプのプロトタイプに割り当てます。このメソッドは、このプロトタイプで定義されています。
これにより、2つの異なるサブタイプインスタンスが色の属性を含む独自のプロパティを持つことができ、同じ方法を使用できます。
上記の記事では、JS継承_Borrowコンストラクターとコンビネーション継承について簡単に説明しています。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。