I.定義:
オブジェクトはJavaScriptの基本データ型であり、そして多くの値(元の値または他のオブジェクト)が一緒に凝集し、これらの値は、名前(AS名/属性名)によってアクセスすることができる複合値です。性質のもの順不同コレクション。
キーは、次のようにいくつかのテストは、(不完全)であるかを型であってもよい属性名に名前を付けることです。
第二に、オブジェクトのメソッドを作成します
1.試験例として、{}内に直接キーを作成
クラスの例2.方法:新しい+オブジェクト()
車=ましょう新しい新)(オブジェクト; //実際に、[「型」]バックグラウンドで自動的に最後の車の文言にcar.type行っ car.typeを = 「ホンダ」 ; // 車と同等の[「型」] = 'ホンダ car.color = ' ホワイト' ; // CARの[ '色'] = '白'に相当 cat.seat = 5 ; // 。CAT [ 'SEAT'] =に相当5
car.sayColor =関数( ){アラート(this.color)}
両方の方法1及び2工場モードで、この目的のために、複数のオブジェクトを作成するために、重複コードを大量に同じインタフェースを使用して以来
3.ファクトリーモード - 関数の戻りの形
関数creaeCar(種類、色、SEAT){ LET OBJ = 新しい新しいオブジェクト(); obj.type = タイプ; obj.color = カラー; obj.seat = SEAT;
obj.sayColor =関数(){アラート(this.color) } 戻りOBJ; }
createCar = car01 LET( 'ホンダ'、 '白' ,. 5); //は、例えば、オブジェクトのみ決定されるのinstanceof決定することができない真のオブジェクト//のinstanceof PERSON1を
プラントモデルは、物体認識の問題を解決しないように、オブジェクトの種類は、特定の配列、日付、等のタイプとは違って、検出され、従ってパターンを作成するためのコンストラクタメソッドが登場しています。
4.コンストラクタモード
1台の 関数車(種類、色、SEAT){ 2 本 .TYPE = タイプ; 3 この .color = カラー】 4 本 .seat = SEAT;
this.sayColor =関数(){アラート(this.color)} 5。 } 6。 。7(5 ,. 'ホンダ、「白」= car01車せ); // //カーケース真car01へのinstanceof 8にconsole.log(Car.constructor); // このオブジェクトを作成するためのアレイ、関数への参照を返します
そこ実施の形態とは異なり、工場モデルのコンストラクタで見ることができます。
(1)明示的にオブジェクトを作成していない、(2)直接、このオブジェクトのプロパティとメソッドに割り当てられ、(3)は、returnステートメントありません
次のように実際には、コンストラクタを呼び出すことです。
「自動的に新しいオブジェクトを返します==新しいオブジェクトにプロパティを追加し、コンストラクタの実行「をここまで==新しいオブジェクトに、つまり、新しいオブジェクトに割り当てられた範囲のコンストラクタ」==新しいオブジェクトを作成します。
しかし、コンストラクタは、各インスタンスは異なる関数インスタンス、同じことをやって、コンストラクタのメソッドが含まれていますが、インスタンス化は別のオブジェクトを生成した後(sayColor方法は、関数で、関数は、オブジェクト)、欠陥があります。
だから、プロトタイプモデルを生産しています。
プロトタイプモデル
機能車(){} Car.prototype.type = 'ホンダ。//相当于pythonの中公共的类变量 Car.prototype.color = '白' 。 Car.prototype.seat = 5 ; Car.prototype.sayColor = 関数(){aleart(この.color)}。 console.log(Car.prototype)。// オブジェクト{タイプ: 'ホンダ'、色: '白'、座席:5} せcar01 = 新しいカー()。 console.log(car01.type)。// ホンダ
)(= car02新しい車をみましょう。
car02.color = '赤';
console.log(car02); //車{色: '赤'}
にconsole.log(car02.prototype.color)。//报错的
console.log(car02.type); //デフォルトのプロトタイプ「ホンダ」を表示します。
利点プロトタイプモデルは、そのプロパティとメソッドのすべてのインスタンス、すなわちパブリックプロパティによって共有され、プライベートプロパティ値は、プロトタイプオブジェクトの同じ名前の属性(メソッド)を覆う、例えばcar02を除いて、そのような=「赤」car02.colorとして、提供されてもよいです。
前記混合モード(モードプロトタイプコンストラクタ+)
コンストラクタインスタンスのプロパティを定義するためのパターン、およびプロトタイプモデル共有プロパティを定義する方法
機能車(種類、色、SEAT){ この .TYPE = タイプ; この .color = カラー; この .seat = SEAT; } Car.prototype = { コンストラクタ:車、 // 各関数プロトタイプ性、点プロトタイプオブジェクトがどこ関数プロトタイププロパティへのポインタであるコンストラクタ、属性を持つ関数プロトタイプオブジェクト、 sayColorを:関数(){ アラート(この.color); } } car01 =せて新たな新しい車(「ホンダ」、「白」、 。5 ); はconsole.log(car01); せcar02 = 新しい新しいカー( "BMW"、 '青'、2 ); はconsole.log(car02)。
図から分かるように、混合モードは、同じ方法を参照して共有するだけでなく、各インスタンスは、それ自身のプライベートな性質を有していることを確実にします。省メモリを最大化
https://www.cnblogs.com/libin-1/p/5911190.html
https://www.cnblogs.com/juggdxy/p/8245491.html