Javascript語言是符合面向?qū)ο笏枷氲?。一般來說,面向?qū)ο笏枷胄枰獫M足以下三個基本要求:
封裝,Javascript的對象可以自由的擴充成員變量和方法,自然是滿足該要求的
繼承,Javascript采用了比較少見的原型繼承機制,也滿足該要求
多態(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ī)定,但是寫起來實在是有些費勁
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26