Javascript語(yǔ)言是符合面向?qū)ο笏枷氲摹R话銇?lái)說(shuō),面向?qū)ο笏枷胄枰獫M足以下三個(gè)基本要求:
封裝,Javascript的對(duì)象可以自由的擴(kuò)充成員變量和方法,自然是滿足該要求的
繼承,Javascript采用了比較少見(jiàn)的原型繼承機(jī)制,也滿足該要求
多態(tài),Javascript的原型繼承機(jī)制也可以支持多態(tài)
這里的關(guān)鍵問(wèn)題就是Javascript的原型繼承機(jī)制到底是個(gè)啥玩意?
1.對(duì)象的原型
有很大的可能性,Javascript在設(shè)計(jì)之初根本就沒(méi)有考慮那么復(fù)雜。啥玩意面向?qū)ο笏枷?,跟我有半毛錢(qián)關(guān)系啊。公司就給我兩周時(shí)間,連設(shè)計(jì)帶編碼,我當(dāng)然是怎么簡(jiǎn)單怎么來(lái)了。如果說(shuō)一門(mén)計(jì)算機(jī)語(yǔ)言一定要滿足唯一的一個(gè)最最基本的設(shè)計(jì)思想,那一定不是面向?qū)ο?,而?yīng)該是更簡(jiǎn)單的:語(yǔ)言應(yīng)支持功能的復(fù)用。如果一個(gè)對(duì)象功能不夠用了,那就再叫個(gè)幫手唄,于是Javascript硬性規(guī)定:任何對(duì)象都必須有一個(gè)原型對(duì)象。這下好了,所有的Javascript對(duì)象都是自帶秘書(shū)的,自己搞不定的就交給秘書(shū)去搞,秘書(shū)再搞不定的,就交給秘書(shū)的秘書(shū)去搞,這樣一路交接過(guò)去,直到徹底搞不定了,那就只好報(bào)錯(cuò)。這就是Javascript中的原型鏈檢索機(jī)制,是不是超簡(jiǎn)單?
因?yàn)閷?duì)象的原型是Javascript對(duì)象的基本構(gòu)件,那么首要的問(wèn)題就是如何得到對(duì)象的原型對(duì)象?大體來(lái)說(shuō)有以下兩種方法:
obj.__proto__,有點(diǎn)黑客的意思,但是現(xiàn)代幾乎所有的瀏覽器都支持它,關(guān)鍵是最直接
Object.getPrototypeOf(obj),盡管是Javascript語(yǔ)言的一個(gè)規(guī)定,但是寫(xiě)起來(lái)實(shí)在是有些費(fèi)勁
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26