JavaScriptはどうやって構造関数を借りて継承しますか?
1462 ワード
この文章は主にJavaScriptがどのように構造関数を借りて継承しているかを紹介しています。ここでは例示コードを通して紹介された非常に詳細で、皆さんの学習や仕事に対して一定の参考学習価値を持っています。必要な友達は参考にしてください。
構造関数の継承を借りると、サブタイプのコンストラクタの内部で超タイプのコンストラクタを呼び出します。
構造関数を用いて継承される利点は,サブタイプの構造関数において,超タイプの構造関数にパラメータを伝達することができることである。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
構造関数の継承を借りると、サブタイプのコンストラクタの内部で超タイプのコンストラクタを呼び出します。
function girlFriend(){
this.girls = ['chen','wang','zhu'];
}
function Person(){
girlFriend.call(this,20);
}
var wang = new Person();
var zhu = new Person();
wang.girls.push('zhang');
console.log(wang.girls); //(4) ["chen", "wang", "zhu", "zhang"]
console.log(zhu.girls); //(3) ["chen", "wang", "zhu"]
以上のコードを通じて、原型チェーン継承に発生した問題はもう発生しなくなりました。この超種は布団類で作成された事例を共有しません。構造関数を用いて継承される利点は,サブタイプの構造関数において,超タイプの構造関数にパラメータを伝達することができることである。
function SuperType(name){
this.name = name;
}
function SubType(){
SuperType.call(this,"nick");
this.age = 20;
}
var instance = new SubType();
console.log(instance.name); //nick
console.log(instance.age); //20
構造関数の継承を借りる問題:構造関数で継承して超タイプの原型に定義された方法を継承することはできません。例えば、以下のコードのように、girlFriendsアーキテクチャ関数のプロトタイプにsayHello方法を追加します。
girlFriend.prototype.sayHello = function(){
console.log('hello');
}
そのサブクラスのコンストラクタを継承する例は、このsayHello方法には呼び出されません。戻り値はundefinedです。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。