オブジェクト指向その3

オブジェクトの作成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)
  • 使用シナリオ:特定されたオブジェクトの複数の型を作成する必要があります。(実施例˙ああは、その特定の種類で標識されました)
  • 短所:各オブジェクトは同じデータ(メソッド)、メモリの浪費を有しています。

 

おすすめ

転載: www.cnblogs.com/-constructor/p/11869968.html