上一集中,重點(diǎn)介紹了誰動了你的代碼。這里先總結(jié)一下:咱們的代碼從敲下來到運(yùn)行出結(jié)果,經(jīng)歷了兩個階段:分析期與運(yùn)行期。在分析期,JavaScript分析器悄悄動了我們的代碼;在運(yùn)行期,JavaScript又按照自己的一套機(jī)制進(jìn)行變量尋找。我們的代碼是如何被動了手腳的,相信看官你已經(jīng)明白。但是前面所聊均是面向過程的,如果說只是簡單的面向過程言語,那JavaScript能夠有基本的數(shù)據(jù)類型,基本的執(zhí)行單元那也差不多了。但是故事并沒有在此結(jié)束。接下來劇情的發(fā)展,那才是造成今天鞋同們困惑的地方,那們還是從故事開始。大伙不要嫌樓主啰嗦(樓主確實(shí)是個啰嗦之人),講這故事是為了讓大伙了解當(dāng)年布大師設(shè)計JavaScript的背景,融入布大師的設(shè)計思維,你就知道JavaScript為什么會有哪些奇怪的設(shè)計。好,故事開始了。

  前幾集的故事中,咱們提到了布大師只想設(shè)計一個簡單、滿足瀏覽器進(jìn)行數(shù)據(jù)檢驗(yàn)的腳本言語。當(dāng)時的web應(yīng)用毫無顏值,猶如白紙黑字,頂多再加點(diǎn)圖片。所以,你也別期待當(dāng)時的布大師會想到如UI交互、動畫效果等等的設(shè)計需求。為此,從一開始布大師設(shè)計的JavaScript就是一個過程式的簡單的言語,但是布大師也不是個迂腐落后之人。c的升級版c++、讓編程界有點(diǎn)瘋狂的Java,布大師也不能視而不見,多少受點(diǎn)影響。于是乎,布大師想:我這JavaScript能否也玩點(diǎn)OOP思想呢?布大師這么一想,一堆問題就來了,本來就沒打算搞個正式的OOP腳本,也沒設(shè)計有class、extend,更沒有override啥的。但是今天拍腦袋一想要玩OOP,那總得在現(xiàn)有的設(shè)計基礎(chǔ)上去實(shí)現(xiàn)OOP三大思想(封裝、繼承、多態(tài))吧。那咱們就看看布大師是如何給JavaScript賦予OOP的。

封裝

  概念,樓主就不說了。但是你看看JavaScript定義的那些數(shù)據(jù)類型,壓根就沒class的概念。沒有類何來實(shí)例,沒有實(shí)例談何封裝?布大師翻來覆去研究已經(jīng)定義的數(shù)據(jù)類型,再對比了c++、java。他發(fā)現(xiàn)c++、java每次創(chuàng)建對象都離不開調(diào)用構(gòu)造函數(shù)。布大師靈感一來“對!繞過class直接調(diào)用構(gòu)造函數(shù)創(chuàng)建對象,剛好function可以作為構(gòu)造函數(shù)”。于是乎,你見到了今天JavaScript是這樣創(chuàng)建實(shí)現(xiàn)對象的:

延伸閱讀

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

我想了解如何學(xué)習(xí)

姓名:
手機(jī):
留言: