blog

JavaScriptでよく使われる6種類の継承

サブタイプを作成するときに、スーパータイプのコンストラクタにパラメータを渡すことはできません。 すべてのインスタンスで共有されなくなりました。サブタイプも、作成時に親タイプにパラメータを渡すことができ...

Jul 31, 2020 · 2 min. read
シェア

プロトタイプ連鎖継承

継承

Vip.prototype = new Breast();//プロトタイプ連鎖継承の核となるステートメント

デメリット

  • プロトタイプチェーンに参照値を持つプロトタイプが含まれている場合、参照値はすべてのインスタンスで共有されます。
  • サブタイプを作成する際、スーパータイプのコンストラクタにパラメータを渡すことはできません。

コンストラクタ継承からの借用

継承

の呼び出しは親コンストラクタを実行し、this にバインドします。

継承の特徴:

親コンストラクタの内容を子コンストラクタに混ぜるように

// 親クラスを定義する
function Breast(sizes_index){
	this.sizes = [1100, 1200, 1300] ;
	this.sizes_index = sizes_index;
	this.show = function () {
		breast_image.style.height = this.sizes[sizes_index] + "px";
	}
}
//  
function Vip(){
	Breast.call(this); // このコードは、コンストラクタの助けを借りて部分継承を実装し、thisをバインドして親コンストラクタを実行する。
}
const vip_G = new Vip();
const vip_H = new Vip();
const vip_I = new Vip();

プロトタイプチェーンの2つの大きな問題を解決します。

  • プロトタイプ・チェインにおける参照型の値の独立性が保証されます。
  • もはやすべてのインスタンスで共有されることはありません。サブタイプは、作成時に親にパラメータを渡すこともできます。

デメリット: コンストラクタを借用しただけでは、コンストラクタ・パターンの問題を回避することはできません - メソッドはコンストラクタ内で定義されるため、関数の再利用は不可能です。 また、スーパータイプで定義されたメソッドはサブタイプからは見えません。

組合せ継承

つまり

function Vip(){
	Breast.call(this);
}
Vip.prototype = new Breast();
const vip_G = new Vip();
const vip_H = new Vip();
const vip_I = new Vip();

プロトタイプ継承

const breast = {
	sizes: [1100, 1200, 1300], 
};
function object (o) {
	function F () {}
 F.prototype = o;
 return new F ();
}
const vip_G = object (breast);
const vip_H = object (breast);

寄生継承

寄生組合せ継承

は、以前の借用コンストラクタ、プロトタイプ、寄生継承を改良したものです。

inheritPrototype(Vip, Breast);
function object (o) {
	function F () {}
 F.prototype = o;
 return new F ();
}
function inheritPrototype(son, father) {
 let x = object(father.prototype);
	x.constructor = son ;
	son.prototype = x;
}
Read next

Adobe Premiere Pro CC2018Pr cc2018 インストールグラフィックチュートリアル、登録方法無料ダウンロード****.

リンク: ;\n抽出コード: zfow\n\n![]\n\n![]\nデータ駆動型インフォグラフィックス\nスプレッドシートからダイナミックなグラフィカル・テンプレートを提供することで、新たな可能性が広がり、多くの時間を節約できる可能性があります。スプレッドシートファイルをドラッグ&ドロップし、データベースの行間をループさせることができます。

Jul 31, 2020 · 2 min read