// 加入 prototype
PhoneTemplate.prototype.callSomeone = function (someone) {
console.log('打通電話給 ' + someone)
}
// 兩者同時共用相同的原型
sonyPhone.callSomeone('小明'); // 打通電話給 小明
nokiaPhone.callSomeone('小明'); // 打通電話給 小明
- 直接在 手機範本 上使用 prototype 的語法來加入撥打電話的功能 (callSomeone),加入此功能後這兩隻手機都同時具有撥打電話的功能。
- 在概念上,這段的原型會如下圖顯示,兩者的上層皆是 phoneTemplate,並且共用相同的方法,這也像魂結一樣兩個連向共用的物件,當此物件新增了任何功能,兩個物件也能一起繼承。

- 除了共用的概念外,我們每次新增一個物件時,物件內的屬性、函式都會需要佔用記憶體空間。也就是一個物件內有 10 個屬性,生成 10 個則會佔用 100 單位的記憶體空間,如果適當地將 5 個屬性轉至原型內,則只會佔用
(5*10) + 5 = 55
的記憶體空間。
- 所有陣列都與此原型產生魂結牽連
- DOM 方法取得的陣列為什麼不能用很多陣列方法,原因他是屬於array-like(類陣列),我們可以從原型中得知它與陣列不是共用的。