- JavaScript 建構式中,我們會使用 function 來建立物件樣板 (只能使用 function,亦不能使用箭頭函式)。
- 如果使用一般的物件製作手機規格的樣板,就會出現以下的問題,當物件賦予到另一個物件上時,兩者其實是使用相同的資料,當修改後者時前者也會跟著修改 (JavaScript 傳參考的特性)
- 原型繼承運用建構式
- 建構式,寫好一個樣板,有需要的格式直接從該樣板取用即可。
用建構式時,盡可能使用大寫開頭
建構式內容(this 則是代表此物件的屬性 \可以透過參數來傳入數值 \使用 new 來套用此樣板,且最終一樣會產生物件)
用樣板會使用 new 這個方法,並且可以透過傳入參數的方法來改變預設值,同的樣板套用上不同的值,但兩者並沒有任何關係。
建構式可以透過 “同一個物件樣板”,不斷地產生 “不同”的物件,每個物件彼此都是獨立的(不會有參考的問題),只不過共用相同的原型。
function PhoneTemplate(brand, modal, withCamera) {
this.brand = brand;
this.modal = modal;
this.withCamera = withCamera || false;
this.takePhoto = function () {
if (this.withCamera) {
console.log(this.modal + ' 照相');
} else {
console.log(this.modal + ' 這台沒有照相功能');
}
}
}
var sonyPhone = new PhoneTemplate('Sony', 'Z100', true);
var nokiaPhone = new PhoneTemplate('Nokia', '3310', false);
sonyPhone.call = function () {
console.log(this.modal + ' 打電話');
}
sonyPhone.call(); // Z100 打電話
nokiaPhone.call(); // nokiaPhone.call is not a function