オブジェクトを作成します。
1.工場パターン
機能createPerson(名前、年齢、仕事){
VAR 0 =新しいオブジェクト();
o.name =名前;
o.age = age;
o.job =ジョブ。
o.sayName =関数(){
警告(this.name);
}。
Oを返します。
}
VAR PERSON1 = createPerson( "エミリー"、21、 "ソフトウェアエンジニア")。
同様のオブジェクトが問題の多くを解決するために作成したファクトリパターンを使用して、それは物体認識の問題を解決していませんが(つまり、どのように私は、オブジェクトの種類を知っていますか)
2.コンストラクタモード
関数人(名前、年齢、仕事){
this.name =名前;
this.age =年齢;
this.job =仕事。
this.sayName =関数(){
警告(this.name);
}。
}
VaRのPERSON1 =新しい人( "エミリー"、22、 "ソフトウェアエンジニア")。
1.表示されないオブジェクトを作成します。
2.直接、このオブジェクトのプロパティとメソッドに割り当てられました
3.ノーリターン文はありません
この方法では、コンストラクタを呼び出すと、実際には次の4つのステップを通過します。
1)新しいオブジェクトを作成します。
2)コンストラクタの範囲は、新しいオブジェクトを割り当てる(これが新しいオブジェクトを指します)。
3)実行コードコンストラクタ
4)新たなオブジェクトを返します
短所:
各インスタンスは、メソッドを有するが、これらの方法は、関数の同じインスタンスではありません。機能は、オブジェクトの各インスタンス化オブジェクトである機能を定義しています。
3.プロトタイプモデル
関数人(){
}
Person.prototype.name =「エミリー」。
Person.prototype.age = 20。
Person.prototype.job =「ソフトウェアエンジニア」。
Person.prototype.sayName =関数(){
警告(this.name);
}。
)(PERSON1 =新しい人でした。
共有プロパティ:プロパティとメソッドは、プロトタイプ、プロトタイプモデルに配置されます。
あなたは時間のインスタンスを作成するときは、プロトタイプのプロパティとメソッドにアクセスすることができますし、インスタンスあなたはプロトタイプのプロパティとメソッドを変更した場合も、他のインスタンスに影響を与えます。
4.モデルとプロトタイプモデルコンストラクタの組み合わせ
関数人(名前、年齢、仕事){
this.name =名前;
this.age =年齢;
this.job =仕事。
}
Person.prototype = {
コンストラクタ:人。
sayName:関数(){
警告(this.name);
}
}
VaRの人=新しい人( "エミリー"、22、 "ソフトウェアエンジニア")
インスタンスコンストラクタは、属性、プロパティ、および共通のプロトタイプで定義されたメソッドを定義しました。