Prototypal Classes
- 下面的Code會有一個效能的問題,每產生一個Car物件,都會複製一份methods過去
- 一個做法是使用Object.create()創造物件,就會有Prototype Chain的特性,將Car.methods帶入Object.create()中,如此一來這個Car.methods就只會有一份,所產生的每一個Car物件都會reference到同一個Car.methods
- 有鑑於這種方式太常用,JavaScript在Object的constructor提供一個叫prototype的property,讓開發者可以將methods儲存在裡面
- prototype這個property裡面會有constructor,指回該物件,下面的例子中Car.prototype.constructor就是指回Car
- amy.constructor會透過Prototype Chain往上找到Car.prototype,所以也是指到Car
- 使用instanceof operator可以看出amy是Car的instance無誤
- 而下面的例子中,instanceof的結果會是False,這是因為fido是一個function物件,它的上一層是Object Prototype,Dog並不會在fido的Prototype Chain之中
參考資料
https://classroom.udacity.com/courses/ud015
沒有留言:
張貼留言