JavaScript の継承について詳しく学ぶ前に、まず次の概念を理解してください:
親クラス: 継承されたクラス
サブクラス: 継承されたクラス
スーパー クラス: つまり、親クラス
抽象クラス: A通常はインスタンス化に使用されないクラス。その目的は他のクラスから継承することです。
基底クラス: 他のクラスが継承できるクラス
派生クラス: 基底クラスから継承されるクラス
。
JavaScript オブジェクトの継承には通常、次の 5 つのメソッドがあります:
1. オブジェクトの偽装
2. call() メソッド
3. apply() メソッド
4. プロトタイプ チェーン
5.混合メソッド
A. オブジェクトの偽装
いわゆるオブジェクトの偽装とは、継承の目的を達成するために、新しいクラスが古いクラスを偽装することです (古いクラスはコンストラクター メソッドを使用する必要があります)。例 .1
function people(name,sex) ,age){ // コンストラクター メソッドを使用します。
this.name=name;
this.say=function(){
alert(" 私の名前は "
};
this.doing=function(){
alert("私は話しています");
}
var Marry=new people("Marry","Woman","23");
Marry.doing(); White_people(名前, 性別, 年齢){
this.inherit=people;
this.inherit を削除
this.area= function(){
alert("私はヨーロッパにいます");
}
}
var Tom=newwhite_people("トム","男","21"); Tom.say( );
Tom.area();
alert(Tom.age);
上記の例では、people がwhite_people の基本クラスとして使用されていることに注意してください。形式は
this.inherit=people で、継承を実現するためにオブジェクトの偽装に使用されます。 //Inherit
delete this.inherit; /継承の削除
親クラスの関連する属性とメソッドの上書きを避けるために、すべての新しい属性と新しいメソッドを削除する必要があります。
さらに、オブジェクトの偽装は多重継承をサポートします。 2
コードをコピーします
コードは次のとおりです。
function worker(pay,work){
this.pay= pay;
var Jerry=new city_worker("Jerry","man","21","$1000","coder"); >alert(Jerry.work) ;
オブジェクトの偽装には欠点があります。多重継承メカニズムが実装されている場合、基本クラスが同じ属性またはメソッドを持つ場合、後続のクラスから継承されてしまいます。 .
B.call () メソッド
は、カプセル化されたオブジェクトによって偽装された単なる関数です。このように、「古典的な」 3 つの文を記述する必要はなくなり、次の文に置き換えます。文:
Base class.call(object,parameters List)
eg.1
コードをコピー
コードは次のとおりです
function farmer(name,sex,age,pay,work){
people.call(this,name,sex,age);
worker.call(this) ,pay,work);
}
var Nicholas=new farmer("Nicholas","man","27","$3000","irrigator"); );
alert(Nicholas.pay);
コードをコピー
コードは次のとおりです:
function White_collar(name,sex,age,pay,work) ){
people.apply(this,new Array(name,sex,age));
worker.apply(this,[pay,work]);
var Jiessie =newwhite_collar("Jiessie","女性","26","$2500","editor");
Jiessie.say()
alert(Jiessie.work);
同様に、apply() には同じ名前のプロパティとメソッドに関する小さな問題があります。
D. プロトタイプ チェーン
同様に、上記の 3 つのメソッドはすべてコンストラクターの形式で継承を使用します。
eg.1
function blue_collar(){
}
blue_collar.prototype.name="ジーン";
blue_collar.prototype.age="33";プロトタイプ.say=function(){
alert("私の名前は "
);
function city_blue_collar(){
}
city_blue_collar.prototype=新しいブルーカラー();
var jj=新しいシティ_ブルー_カラー
;
The prototype chain also has the disadvantages of the prototype chain: parameters cannot be passed. In addition, the prototype chain does not support multiple inheritance, because
E. Mixed method
uses the constructor method to write the attributes of the class, For inheritance of attributes, use call() or apply()
Use prototype method to write methods, for inheritance of methods, use prototype chain
eg.1
function beauty(name,age){
this.name=name;
this.age=age;
}
beauty.prototype.say=function(){
alert("Little girl's name" this.name);
};
function china_beauty(name,age,area ){
beauty.call(this,name,age);
this.area=area;
}
china_beauty.prototype=new beauty();
china_beauty.prototype.from= function(){
alert("I am from" this.area);
};
var diaochan=new china_beauty("Diao Chan","16","Lintao");
diaochan.say();
diaochan.from();
alert(diaochan.age);