昨日冬遊,車上閒聊公司將來的產品方向、HTML5潮流、如此等等。Leader忽然說「你js怎麼那麼NB」。耳風剛過,不知是受誇若驚,仍是自覺水平太low。彷佛有點驚喜也有點壓力。要知道,哥一直以服務端碼農的身份混跡江湖,心想「要靠js混飯,還得努力啊」。javascript
然而,Leader無心一句話,倒讓我不由思索一番。Leader出身於NB的後端碼農,像絕大部分後端工程師同樣。或許對前端不太感冒,或是js坑爹的僞OO、拐彎抹角的運行機制困惑了他們。在哥看來掌握js絕非難事,我曾經也是個對js一竅不通的java農,當年對面js,我也不知道:這玩兒怎麼去實現OO?this處處是,表明的是什麼?到底什麼原型鏈?如此等等,用java、c#那套高級完整的OO詞法去琢磨js實在難以理解接受。爲此,我但願以java農的身份,有的放矢,寫幾篇blogs,或許文筆笨拙,但仍指望對後端同窗有所幫助。前端
上面扯那麼多,無非是找點寫感,料想當年畢業論文一過,洋洋灑灑一百字以上的文章都沒寫過,如今更甚,哄妹子都不會,以致於單身至今。廢話了,下面重點來了!java
想必,同窗你已經看了標題《JavaScript的前世此生》,不是說寫點有助於同窗的blogs嗎,怎麼搞個history了?我告訴你:學習得以追女那勁頭去實踐,今天你想要將js"玩弄"在手,你就得像追妹子同樣,先了解妹子的history。這妹子是來自哪裏的?都在哪兒念過書?有過多少個男朋友等等,這樣才能全面點了解妹子的各類"特性"。固然這裏沒有要玩弄妹子的意思\(^o^)/~。c++
人類的進步都是在各類各樣的需求中推動的。JavaScript的出現也是需求使然。說Javascript誕生以前,得先說說internet是怎麼搞出來的。上世紀60年代,老美搞了個國防通訊網,爲的是win the war;到了80年代,仍是老美的磚家,不過這回的主角是善良的科學家與教育磚家。他們爲了方便遍及各地的科研機構、學校可以快速進行數據交換共享,因而搞了全國性的網絡,將這些機構鏈接起來。這個時候,互聯網出生了。可是還只侷限高磚們使用,他們進行數據交換的格式也只是高磚們開個會議、拍拍腦殼就定調的各類文本格式。程序員
到了90年代,internet開始走出科研機構、實驗室,開始了商用的路程,即老百姓也用得了。但這個時候,問題來了,老百姓不是磚家,他們可不能開會定數據交換的格式。是的,老百姓的需求來了!因而各大軟件公司、如NetScape、microsoft紛紛推出了基於超文本傳輸協議(HTTP,HyperText Transfer Protocol)數據交換格式的NB軟件!它就是今天咱們每天都用到的的瀏覽器!web
啊!瀏覽器來了!這牛B的軟件,能將正確解析經過internet傳輸的文字、圖片;可以接收鍵盤的輸入,將咱們想要表達的意思傳輸給另外一方。可是,你看準了!這NB的軟件當時很傻,只能作接收數據、呈現數據的事情,沒法對輸入數據進行任何校驗。好比你本想給妹子轉帳100美金,可是手賤多按了幾個0,瀏覽器毫無提示就將數據提交到服務器了,固然服務器會有校驗。可是當時的internet慢得像綠皮火車,好不容易將你轉帳這個信息運到了目的地(服務器),才進行檢驗,才發現你不能轉那麼多錢。因而綠皮車又像蝸牛同樣將你不能轉帳的信息運回去,告訴你可能輸入的金額錯誤了!你懂的,綠皮車慢得讓人受不了!這一來回,你已經喝了幾杯咖啡,才獲得提示「我不能轉那麼多錢」!磚家們更受不了!因而,需求又來了!大牛們又擠在一塊兒喝咖啡,商討怎麼解決這個問題。大約在1995年,NetScape裏面有個NB的程序員布蘭登-艾奇,他搞了個liveScript腳本語言,直接集成到Navigator2瀏覽器上。是的,這個liveScript可以知足解決前面遇到的問題。但你看準了,它的名字叫「liveScript」,那時候的它還不叫javascript。那如今叫的「javascript」又是怎麼來的呢?這事情還得扯到曾經偉大得像太陽的sun公司。那時,sun公司那個牛b得「一次編譯、處處運行」的java已經被熱炒。Navigator的老大們也懂點營銷策略,爲了給即將推出的Navigator2增長籌碼,因而找上了sun的大門。詢問能不能借用「java」的頭銜。sun也是夠偉大的,二話不說,拿去用吧!要是放到如今,這個詞估計要花上好幾百元億美金(sun之死,是否是因爲太慷慨了呢?)。因而乎,原來的liveScript變成了如今的javascript。鞋同們,看到這裏應該javascript與java是什麼關係了吧?可別再想javascript和java有多是同一條船的了!編程
到此,你如今終於知道javascript是怎麼來的了吧!好!很好!那問題也來了。當時的出生環境、出生需求,註定了javascript的各類變態特性。話說199x年那段日子,java仍是個嬰兒,編程界仍是c、c++這類言語當道,雖然c++這種改良的c跟當代oo思想靠上了邊。可是各大高手們,都已經深受c言語的毒害。布蘭登-艾奇也不列外,這傢伙在設計liveScript的時候,明顯受到了c言語的影響。因此你看到的javascript沒有namespace(在java裏面叫pakeage)、沒有class的概念、更沒有繼承、重寫、重載的設計特性。那如今的javascript面向對象編程是怎麼回事,那都利用了奇淫技巧、拐彎抹角去實現的。不過咱們都是幸運的,Javascript ES6版本的面向對象特性已經進一步完善,之後不會那麼彆扭了。c#
是的,javascript應運而生了,可是自出生以來,它的地位一直不高,它被設計爲簡單的瀏覽器數據校驗角色。說白了無關緊要,若是不採用javascript進行客戶端驗證,無非是要發回服務器驗證而已,只是因爲網絡傳輸,使用體驗差而已。並非離開了它就活不了。javascript的尷尬地位從出生那天就已經註定了。後端
俗話說「留得青山在不愁沒柴燒」,javascript撐着這無關緊要的身份混到了二十世紀初。internet出現了影響深遠的Ajax技術(異步JavaScript和XML技術),也拯救了javascript。要說感謝,javascript得感謝兩個偉大的公司,一個是microsoft、一個是google。二十世紀初那會,webservice興起,你懂的,websercie的傳輸協議文本格式其實就是一個xml。微軟爲此率先以ActiveXObject的形式在本身瀏覽器裏搞了個XMLHTTPRequest。一看名字就知道,這玩兒當時是爲了在瀏覽器上實現與服務端的webservice應用通訊。結果微軟此舉甚是成功,各大瀏覽器廠商紛紛跟進,效仿微軟(不要噴得太多國內的互聯網抄襲之風,有能力才能抄襲,無能力只能出錢買)。因而乎現代瀏覽器都實現了XMLHTTPRequest,爲Ajax技術提供了實現基礎。那爲什麼,javascript要感謝google呢?XMLHTTPRequest的出現算是挽救了javascript,可是真正讓javascript擺脫無關緊要地位的是google。衆所周知,google是個創新型的偉大公司,其實google的創新並不都是創造了新的事物,更可能是的利用現有的東西來進行組合創新,如今的安卓系統如此,當年對Ajax的應用也是如此。正當那會XMLHTTPRequest火熱的時候,google將這個新事物應用到了Gmai、google地圖等熱門應用上,大得到成功。javascript由此翻身,成爲了web開發領域必殺技!瀏覽器
雖然javascript已經翻身作了web端開發的主人,但歷史還在演進,技術還在不停更新。時至今日,軟件應用已經深刻老百姓生活的方方面面。這幾年,移動互聯網的迅猛發展,更是將javascript技能推向史無前例的高地。javascript的身影也不僅侷限於當時設計的應用範圍。其已經出如今服務端編程中,尤爲是移動跨平臺開發,更是一門高效的賺錢技能。
鞋同們!看了它的history,你是否是急着想掌握這門高效的賺錢技能?不要急,敬請期待下一篇博文!