JavaScriptは相続の大全書を実現します.
3117 ワード
jsの継承に関する知識を復習します.
jsの継承:
ECMAScriptではプロトタイプチェーンの概念を述べ、プロトタイプチェーンを継承を実現する主要な方法として用いた.その主な思想は原型を利用して一つの引用タイプに別の引用タイプの属性と方法を継承させることです.
基本的な考え:サブタイプのコンストラクタの内部で超タイプのコンストラクタを呼び出します.
ダグラス・クロックス・ドレスが2006年に書いた文章で、継承を実現する方法を紹介しました.この方法は厳密な意味でのコンストラクターを使用していません.彼の考えは原型によって既存のオブジェクトに基づいて新しいオブジェクトを作成することができます.この目撃を達成するために、彼は次のような関数を与えた.
5、寄生式継承
寄生式継承はプロトタイプの継承と密接に関連した考え方であり、クロコダイル福徳が推進したものでもある.寄生式継承の考えは寄生構造関数と工場モードと類似しています.すなわち、継承プロセスをパッケージ化するための関数だけを作成します.この関数は内部である種の方法でオブジェクトを強化し、最後には本当にすべての仕事をしたように対象に戻ります.以下のコードは寄生式継承モードを示す.
コンビネーション継承はjsの最も一般的な継承モデルですが、不足もあります.組み合わせ継承の最大の問題は,どのような場合でも,二次超構造関数を呼び出すことである.一度はサブタイプの原型を作成する時,もう一つはサブタイプの構造関数の内部にある.寄生結合式継承は、引用タイプの最も理想的な継承方式である.寄生結合式継承の基本パターンは以下の通りである.
jsの継承:
, 。 , 。 , ECMAScript 。ECMAScript , 。
シーン:サブタイプのChildを作成し、親のPeopleを継承する方法.say関数を呼び出して名前と年齢を言います.function People(name, age) {
this.name = name;
this.age = age;
this.say = function() {
console.log(" :" + this.name + " " + this.age + " !");
}
}
1、プロトタイプチェーンECMAScriptではプロトタイプチェーンの概念を述べ、プロトタイプチェーンを継承を実現する主要な方法として用いた.その主な思想は原型を利用して一つの引用タイプに別の引用タイプの属性と方法を継承させることです.
function Child(name, age) {
this.name = name;
this.age = age;
}
Child.prototype = new People();
var child = new Child('Lorin', 22);
child.say();
2、構造関数を借りて継承する基本的な考え:サブタイプのコンストラクタの内部で超タイプのコンストラクタを呼び出します.
function Child(name, age) {
People.call(this);
this.name = name;
this.age = age;
}
var child = new Child('Lorin', 22);
child.say();
3、コンビネーション引継ぎ , , 。 , 。 , 。
js 。
function Child(name, age) {
People.call(this); //
this.name = name;
this.age = age;
}
Child.prototype = People.prototype; //
var child = new Child('Lorin', 22);
child.say();
4、原型式継承ダグラス・クロックス・ドレスが2006年に書いた文章で、継承を実現する方法を紹介しました.この方法は厳密な意味でのコンストラクターを使用していません.彼の考えは原型によって既存のオブジェクトに基づいて新しいオブジェクトを作成することができます.この目撃を達成するために、彼は次のような関数を与えた.
function object(o) {
function F();
F.prototype = o;
return new F();
}
object() , , 。 , ,object() 。
ECMAScript 5 object.create() 。 :
プロトタイプのオブジェクトと新しいオブジェクトは、追加の属性のオブジェクトを定義します.一つのパラメータが入った場合、Object.creat()は、Object()方法と同じ挙動を示します.5、寄生式継承
寄生式継承はプロトタイプの継承と密接に関連した考え方であり、クロコダイル福徳が推進したものでもある.寄生式継承の考えは寄生構造関数と工場モードと類似しています.すなわち、継承プロセスをパッケージ化するための関数だけを作成します.この関数は内部である種の方法でオブジェクトを強化し、最後には本当にすべての仕事をしたように対象に戻ります.以下のコードは寄生式継承モードを示す.
function createAnother(obj) {
var clone = object(original); //
clone.sayHi = function() { //
console.log('hi');
};
return clone; //
}
6、寄生組合式継承コンビネーション継承はjsの最も一般的な継承モデルですが、不足もあります.組み合わせ継承の最大の問題は,どのような場合でも,二次超構造関数を呼び出すことである.一度はサブタイプの原型を作成する時,もう一つはサブタイプの構造関数の内部にある.寄生結合式継承は、引用タイプの最も理想的な継承方式である.寄生結合式継承の基本パターンは以下の通りである.
function inheriPrototype (subType, superType) {
var prototype = object(superType.prototype); //
prototype.constructor = subType; //
subType.prototype = prototype; //
}
シーン解決:function Child(name, age) {
People.call(this);
this.name = name;
this.age = age;
}
Child.prototype = Object.create(People.prototype);
Child.prototype.constructor = Child;
var child = new Child('Lorin', 22);
child.say();