オブジェクトの作成6.2
方法:オブジェクトリテラルオブジェクトコンストラクタ
短所:単一のオブジェクトを作成することです。インターフェイスは、複数のオブジェクトを作成するには、それが重複したコードの多くを生成します。
6.2.1工場パターン
オブジェクトを作成する機能パッケージとの特異的なインターフェース
関数 createPerson(名前、年齢){ // この関数はオブジェクトを返す植物の関数である VAR OBJ = { 名:名前、 年齢:年齢、 sstName:関数(名前){ この .nameの= 名 } } 戻りOBJ }
- アプリケーションシナリオ:複数のオブジェクトを作成する必要があります。
- 短所:オブジェクトは、オブジェクトタイプの特定のタイプを持っていません。
6.2.2コンストラクタモード
そして、工場出荷時の機能の違い:
- ノーリターン
- 明示的にオブジェクトを作成しません
- 直接に与えられたプロパティとメソッドに
新しいインスタンスを作成するには、new演算子を使用する必要があります。
- 新しいオブジェクトを作成します。
- 新しいオブジェクトのコンストラクタに与えられた範囲(したがって、これは、新しいオブジェクトを指し示すことになります)
- コードコンストラクタを実行する(新しいオブジェクトプロパティを追加します)
- 新しいオブジェクトを返します。
関数人(名前、年齢){ この .nameの= 名前 この .ageを= 年齢 この .setName = 関数(名前){ この .nameの= 名 } } のvar P1 = 新しい人( 'トム'、15 ) VaRの P2 = 新しいです人( 'ジャック'、14 ) はconsole.log(P1 のinstanceof人)// 真P1是人类型 関数学生(名、学年){ この .nameの=名前 この .gradeを= グレード } VAR S1 = 新しい生徒( 'ピーター'、6 ) はconsole.log(S1 instanceofは学生)// 真S1是学生类型 にconsole.log(P1、P2)
- 使用シナリオ:特定されたオブジェクトの複数の型を作成する必要があります。(実施例˙ああは、その特定の種類で標識されました)
- 短所:各オブジェクトは同じデータ(メソッド)、メモリの浪費を有しています。