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
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
留言
張貼留言