javascriptで継承を実現する3つの方法(見ればわかる)
1946 ワード
1、原型継承
父類のテンプレートを継承し、父類の原型オブジェクトを継承しました.欠点は父類の事例が伝わっていることです.子類の実用化ではなく、従来の言語に合わない書き方です.
2、類継承(構造関数を借用して継承する)
3、混合相続(原型相続とクラス相続)
//
function Persion(name,age){
this.name = name;
this.age = age;
}
//
Persion.prototype.id = 10;
//
function Boy(sex){
this.sex = sex;
}
//
Boy.prototype = new Persion('c5',27);
var b = new Boy();
alert(b.name)// c5
alert(b.id)//10
このプロトタイプの継承の特徴:父のテンプレートを継承するだけでなく、父のプロトタイプのオブジェクトを継承します.長所は父類のテンプレートを継承し、父類の原型オブジェクトを継承しました.欠点は父類の事例が伝わっていることです.子類の実用化ではなく、従来の言語に合わない書き方です.
2、類継承(構造関数を借用して継承する)
//
function Persion(name,age){
this.name = name;
this.age = age;
}
//
Persion.prototype.id = 10;
//
function Boy(name,age,sex){
//call apply
Persion.call(this,name,age);
this.sex = sex;
}
var b = new Boy('c5',27,' ');
alert(b.name)// c5
alert(b.id)//undinfind
このプロトタイプの継承の特徴:父のテンプレートを継承し、父のプロトタイプのオブジェクトを継承しません.利点は、子のインスタンスを参照してください.欠点は、親のモデルのオブジェクトを継承しないことです.3、混合相続(原型相続とクラス相続)
//
function Persion(name,age){
this.name = name;
this.age = age;
}
//
Persion.prototype.id = 10;
//
function Boy(name,age,sex){
//call apply
Persion.call(this,name,age);
this.sex = sex;
}
//
Boy.prototype = new Persion();
var b = new Boy('c5',27,' ');
alert(b.name)// c5
alert(b.id)//10
このプロトタイプの継承の特徴:父のテンプレートを継承するだけでなく、父のプロトタイプのオブジェクトを継承します.利点は、サブクラスのインスタンスを参照してください.欠点は、Boy.pertotype=new Persionです. 関数はまた別の例を示しています.関数内部変数はもう一度インスタンスを繰り返します.大きなプログラムの場合は性能がいいです.