1つは、コンストラクターの継承です。
コンストラクターが別のコンストラクターを継承する手順
1.
子クラスのコンストラクターで親クラスのコンストラクターを呼び出します。2。子クラスのプロトタイプが親クラスのプロトタイプを指すようにします。
コード例
この例は、nが継承することです。 aの後のコンストラクターmがオブジェクトnをインスタンス化すると、aはmとnの両方の属性を持ちます。キーコードを記述する
2番目の方法
:
//第一种方法:
function n(){
m.call(this) //继承m构造函数
this.color="red"
}
//第二种方法:
function n(){
this.base=m; //继承m构造函数的属性
this.base() //继承m构造函数的属性
this.color="red"
}
n.prototype = Object.create(m.prototype);
n.prototype.constructor=m
var a=new n()
上記の2つのメソッドは、サブクラスが親クラスを完全に継承します。単一のメソッドのみが継承される
ため、nはmのprintメソッドのみを継承し、mの他の属性は継承しません。
単一のメソッドはキーコードを継承します。
n.prototype.print=function(){
m.prototype.print.call(this)
}
2、多重継承
JavaScriptは多重継承の機能を提供しませんが、別の方法で実現できます。特定のステップは
最初のステップであり、コンストラクターCは親クラスコンストラクターAを呼び出し、親クラスコンストラクターBを呼び出します
。2番目の部分はプロトタイプです。コンストラクターCの継承構造関数Aのプロトタイプ
。3番目の部分であるコンストラクターCの継承チェーンとコンストラクターBの継承チェーン。4
番目の部分であるコンストラクターCは、コンストラクターがC自体であることを指定します。
コード例
3.モジュールのカプセル化
1.基本的な実装方法(モジュールメンバーが公開され、内部属性の状態は外部で変更できます)
2。プライベート変数のカプセル化:関数のコンストラクター
-
方法1(コンストラクターをインスタンスオブジェクトから分離するという原則に違反し、非常にメモリを消費します)
-
方法2(自然に見えますが、そのプライベート変数は外部から読み書きできます)
方法3、プライベート変数をカプセル化する:関数の書き込みを
すぐに実行し、関数の書き込みをすぐに実行し、関連する属性とメソッドをスコープにカプセル化して非公開を実現しますプライベートメンバーの目的
4.モジュール拡大モード
モジュールが非常に大きく、複数のモジュールに分割する必要がある場合、または1つのモジュールが別のモジュールを継承する必要がある場合は、このモードを採用する必要があります。
var module1 = (function (mod){
mod.m3 = function () {
//...
};
return mod;
})(module1);