prototype-based 基於原型的 (初心者適用 )
- 詳細內容
- 分類:Javascript
- 發佈:2013-08-07, 週三 20:21
- 點擊數:2052
prototype-based 基於原型的(初心者適用 ):
如果你已經懂得基於原型的是啥麼意思,就千萬別再看下去,你會覺得我寫的很白癡=="。
學Javascript常常都會聽到基於原型的繼承(prototype-based inheritance )這句話,到底什麼是基於原型??乍看之下很難理解。其實我們可以把基於原型放一邊,然後看看另外一種繼承方式,基於類別的繼承(class-based inheritance)。基於類別的繼承就是用類別來做繼承,這比較容易理解。所以用這角度來看基於原型的繼承,自然能知道基於原型的繼承就是用原型來繼承。
那什麼是原型,基於類別的繼承使用類別來生成物件實例,而基於原型的繼承則可以使用建構函式來建立物件(但不限於建構函式)。而建構函式有個屬性,叫做prototype,中文的意思就是原型。prototype會指向一個物件(意思是會有 prototype=object1 之類的指令行)。所有藉由建構函式建立的物件,都會繼承其建構函式中的prototype所指向物件的屬性。這種行為就是所謂的 " 基於原型的繼承 " 。
不過這種繼承方式繼承下來的屬性,與基於類別的繼承其實不甚相同。這可以講很久,所以後續再說 >"<。
會寫這篇文章是覺得,當初剛接觸Javascript時,實在是覺得基於原型這個字眼著實惱人。雖然有時候跨過一個階段再來看會覺得理所當然,但我常常回想我當初的無奈。所以寫了這篇。
關於物件的深入了解,可以參考一篇翻譯文章:ECMA-262中文翻譯 4.2.1 Object 物件。
關於物件的繼承可以看看這篇:物件的繼承。
PS: 為啥函式會有屬性?:Javascript函式本身就是物件,所以他可以有自己的屬性。
按個讚!~支持本站!~