オブジェクト指向
オブジェクト指向はプログラミングのアイデアであり、オブジェクトのデータ型によって指向されるプログラミングのアイデアです; JSに
文がありますすべてはオブジェクトです
JS c ++ PHP java…オブジェクト指向の開発(OOP)オブジェクト指向プログラミング
4つのオブジェクト指向設計パターン
シングルトンパターン
ファクトリパターン
コンストラクタパターン
プロトタイプパターン
1.シングルトンパターン
独自のプロパティを呼び出すときのシングルトンパターンメソッド
シングルトンパターンは、毎回オブジェクトをvarする必要があり、手動モードの
オブジェクト名に属します。プロパティ名
この呼び出し、ノート発行をこの時点
。他の人の財産への呼び出しは、我々は、オブジェクト名でのみ属性名できる
名前空間が- 「私たちは定義されたオブジェクトの名前である
別のインスタンス-シングルトンを」 - 「普通のオブジェクトを使用することです名前空間として; —すべての一般的なオブジェクトはObject基本クラスのインスタンスに属します。
①シングルケースモード
var zfpx = { name: 'zfpx' 、 set:function (){ }、 get:function (){ } };
②高度なシングルトンモデルは
通常のシングルトンモデルとは異なり、プライバシーはありません。誰でも見ることができ、変更できます。プライバシーの一部を保護する必要がある場合もあります。これらの高度なシングルトンモデルが必要です。
var person =(function (){ var name = 'zfpx' ; var fn = function (){ console.log(name) }; var fn2 = function (){ console.log(name); }; var fn3 = function (){ fn2(); }; 戻り値{ f:fn } })();
2.ファクトリー・モード
ファクトリー・モードは通常の機能
コードの冗長性であり、機能はコードの
高い凝集性と低い結合を実現できます。
シングルトンパターンには、毎回新しいオブジェクトを手動で作成する必要があるという欠点があります。多数のシングルトンを作成する必要がある場合、毎回新しいオブジェクトをvarするのは面倒であり、ある程度のコードの冗長性も引き起こします。これは関数を使用して必要なシングルトンを作成できる場合
、このモデルをファクトリモデルにします。
function factory(name){ var obj = { name:name、 set:function (){ }、 get:function (){ } }; return obj } var obj = factory( 'zfpx' ); var obj2 = factory( 'zfpx2' ); var obj3 = factory( 'zfpx3');
3.コンストラクターパターン
コンストラクターパターン;コンストラクターの作成; new
によるこのコンストラクター(カスタムクラス)のインスタンスの作成このインスタンスの__proto__属性は、
このコンストラクター(カスタムクラス)のプロトタイプオブジェクトを指します。オブジェクトには、コンストラクター自体を指すコンストラクター属性があります。
すべてのインスタンスはオブジェクトです。
すべてのクラスは関数です。
function Person3(){ var name2 = 'zfpx' ; this .name = name2; この .age = 9 ; // this.getName = function(){ // console.log(12) // } // 9を返す; // これを返す; // {}を返す } Person3.prototype.getName = function (){ console.log(this .name) }; Person3.prototype.name = 'zhufeng' ; var per = newPerson3(); // var per3 = new Person3(); var n = Person3(); // n console.log(per); // {name、age} per.getName(); / * * per is Person3 (カスタムクラス)のインスタンス *インスタンスの場合、クラスのプロトタイプでメソッドとプロパティを呼び出すことができます * * /
新しい実行関数と通常の関数実行の違い
新しい実行では、関数内にオブジェクト(this)が自動的に作成されます。関数の実行が完了
すると、戻り値が手動で変更された場合、デフォルトでこれが返されます。戻り値が値型の場合、デフォルトの戻り値それでも
、戻り値が参照データ型の場合、戻り値は参照データ型です。
プロトタイプモードで
はコンストラクタ
プロトタイプを使用します:prototype
すべての関数にはプロパティがあります:prototypeこのプロパティは、関数自体のプロトタイプオブジェクトを指します。
各オブジェクトには、クラスのプロトタイプオブジェクトを指すprotoのプロパティがあります。
デフォルトの各プロトタイプオブジェクトには、プロパティコンストラクターがあり、関数自体を指します
function Person(){ this .name = 'zhufeng' ; this .age = 9 ; } console.log(Person.prototype.constructor === Person); Person.prototype.getName = function (){ console.log(this .name); }; console.log(Person.prototype.getName()); // var per1 = new Person(); var per1 = new Person; // コンストラクタがパラメータを渡す必要がない場合、括弧は次のようになります省略; // var per2 = new Person(); // per1はクラスPersonのインスタンスと呼ばれ、同時に彼もオブジェクトです; console.log(per1 .__ proto__ === Person.prototype); console.log(per1); per1.getName();