JavaScript物件導向-- 建立物件的起源

一般來說, 一開始沒有完整物件導向觀念時, 會採工廠方式構造"多個"物件:

function createPerson(name, sex) {

    //原料
    var obj = new Object();
 
    //加工
    obj.name = name;
    obj.sex = sex;
    obj.showName = function() {
        console.log("my name: " + this.name);
    };
    obj.showSex = function() {
        console.log("my sex: " + this.name);
    };

    //出廠
    return obj;

}

var p1 = createPerson("Mark", "man");
p1.showName();
p1.showSex();

var p2 = createPerson("Susan", "woman");
p2.showName();
p2.showSex();

雖然成功構造多個物件, 但卻產生2個問題:

1. 沒有使用new去定義新物件。很多內建物件如 Date, 都會用new。
2. 每次建立一個新物件就會重複產生一個新方法(但明明每個產生的物件的方法內容是一樣的),造成記憶體浪費:
     p1.showName === p2.showName;      // false



留言

熱門文章