Javascript語言是符合面向?qū)ο笏枷氲?。一般來說,面向?qū)ο笏枷胄枰獫M足以下三個基本要求:

  1. 封裝,Javascript的對象可以自由的擴充成員變量和方法,自然是滿足該要求的

  2. 繼承,Javascript采用了比較少見的原型繼承機制,也滿足該要求

  3. 多態(tài),Javascript的原型繼承機制也可以支持多態(tài)

這里的關(guān)鍵問題就是Javascript的原型繼承機制到底是個啥玩意?

1.對象的原型

有很大的可能性,Javascript在設計之初根本就沒有考慮那么復雜。啥玩意面向?qū)ο笏枷?,跟我有半毛錢關(guān)系啊。公司就給我兩周時間,連設計帶編碼,我當然是怎么簡單怎么來了。如果說一門計算機語言一定要滿足唯一的一個最最基本的設計思想,那一定不是面向?qū)ο?,而應該是更簡單的:語言應支持功能的復用。如果一個對象功能不夠用了,那就再叫個幫手唄,于是Javascript硬性規(guī)定:任何對象都必須有一個原型對象。這下好了,所有的Javascript對象都是自帶秘書的,自己搞不定的就交給秘書去搞,秘書再搞不定的,就交給秘書的秘書去搞,這樣一路交接過去,直到徹底搞不定了,那就只好報錯。這就是Javascript中的原型鏈檢索機制,是不是超簡單?

因為對象的原型是Javascript對象的基本構(gòu)件,那么首要的問題就是如何得到對象的原型對象?大體來說有以下兩種方法:

  • obj.__proto__,有點黑客的意思,但是現(xiàn)代幾乎所有的瀏覽器都支持它,關(guān)鍵是最直接

  • Object.getPrototypeOf(obj),盡管是Javascript語言的一個規(guī)定,但是寫起來實在是有些費勁

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式