2017年8月18日 星期五

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










沒有留言:

張貼留言