JSの工場モードと構造関数モード

1199 ワード

ECMAScriptではクラスを作成することができません.開発者は特定のインターフェースでオブジェクトを作成するための関数を使ってパッケージ化しました.
///    
function  creatPerson(name,age,job) {
    var o = {};
    o.name = name;
    o.age = age;
    o.job = job;
    o.sayName = function () {
        console.log(this.name);
    };
    return o;
}
var person1 = creatPerson("nike",29,"software Engineer");
console.log(person1);
関数creat Personは、受信したパラメータに基づいて必要なすべての情報を含むPersonオブジェクトを構築することができ、何度でも呼び出すことができる.
工場モードは複数の類似対象を作成する問題を解決しましたが、対象識別の問題が解決されていません.
これは新しいモードが現れました.構造関数モードです.
///      
function  Person(name,age,job) {
    this.name= name;
    this.age = age;
    this.job = job;
    this.sayName = function () {
        console.log(this.name);
    };
}

var person2 = new Person("adidas",26,"soft");
上記のコードの中で、工場モードの関数方法をPerson関数で置き換えました.彼らの違いは三つあります.
1.表示されていない作成オブジェクト.
2.直接に属性と方法をthisオブジェクトに与えました.
3.リセットがない
Person関数名がイニシャル大文字Pを使用していることにも注目したい.(コンストラクタはすべて大文字で始まるべきです.コンストラクタは小文字で始まるべきです.)
Personの新しいインスタンスを作成するには、newオペレータが必要です.
コンストラクタを呼び出すステップは4つあります.
1.新しいオブジェクトを作成します.
2.構造関数の役割を新しいオブジェクトに割り当てます.
3.コンストラクタのコードを実行する
4.新しいオブジェクトに戻る