建構式函式特質:
- 函式首字名稱使用大寫,辨認函式是個 constructor。
(使用小寫不會出錯,但不符合慣例)EX:SmartPhone(name, price){}
- 建構式函式不能用
return
指定要回傳其他內容,若加上return
,就只會回傳指定內容,而不會回傳一個新物件。 - 在呼叫函式時需加上
new
EX: let phone_A = new SmartPhone(S100, 20000){} - phone_A 代表 實例 (instance)
- 若不知道建構是韓式的名稱,則可以用
console.log(phone_A.constructor.name) //SmartPhone
原型繼承
繼承 (inheritance)」V.S. 原型繼承 (prototypal inheritance)
- 在 JavaScript 裡,「繼承」是「讓一個物件取得另一個物件的屬性與方法」
- JavaScript 的繼承系統會透過原型鍊 (prototype chain) 來連接到其他物件的功能,與「classical inheritance」的系統略有不同 (e.g. 沒有拷貝程式碼),因此稱為「原型繼承」。
如何在原型鏈中尋找屬性與方法
目標:
let name = ‘abcd’
當我們輸入 name.length()時JS會做些什麼
- 查看name本身是否有這個method =>沒有
- 從name 的 prototype(原型)去找 =>確認 String.protype 中有
- 根據String.protype的函式設計去執行這個method
如何查看原型:使用 Object.getPrototypeOf()