- 看透JavaScript:原理、方法與實踐
- 韓路彪
- 1372字
- 2020-11-28 15:50:41
第2章 JavaScript簡介
JavaScript最初是由網景(Netscape)公司于1995年開發的一種腳本語言,用于給HTML網頁增加動態功能,最早使用在網景導航者瀏覽器上,隨后微軟在其Internet Explorer 3.0中引入了JScript來實現類似的功能。
但是,JScript和JavaScript的語法并不統一,這就給程序開發人員帶來了很大的麻煩。于是,1996年11月,網景公司將JavaScript提交給ECMA(歐洲計算機制造商協會)進行標準化,最后由網景、Sun、微軟和Borland等公司組成的工作組制定了統一的標準——ECMA-262,并且將腳本語言的名稱最終定為ECMAScript(以下簡稱ES)。
ES主要定義了語言本身的特性,而作為一種腳本語言,ES并不是只可以用于瀏覽器,還可以同時用于其他合適的場景,例如,ActionScript可用于Flex, Node.js可用于服務端等。
JavaScript(以下簡稱JS)一般是指用在瀏覽器上完成動態網頁功能的語言,主要包含三部分內容:ES、DOM和BOM。ES定義了基本的語法結構,DOM(Document Object Model,文檔對象模型)定義了文檔對象的結構及其操作方法,BOM(Browser Object Mode,瀏覽器對象模型)提供了跟瀏覽器交互的接口。
多知道點
JS的創始人布蘭登·艾奇
吃水不忘挖井人,在正式學習JS之前,我們先來認識一下它的創建者—布蘭登·艾奇(Brendan Eich)。這是一位傳奇人物,他在1995年4月被網景(Netscape)公司錄用,同年5月,他用了10天時間就將JS設計了出來!
當時的大環境是這樣的,1994年網景公司發布了Navigator(導航者)瀏覽器0.9版。這是一款非常經典的瀏覽器,曾經轟動一時,網景公司也因此名聲大噪。但是,Navigator 0.9并不具備跟用戶交互的功能,只能完成頁面內容的展示,這就成了Navigator 0.9美中不足的地方。為了彌補這一缺陷,當時有兩套解決方案,第一套是采用(當時)現有的腳本語言,例如Perl、Python、Tcl、Scheme等,第二套是網景自己發明一種新的腳本語言。網景公司的高層對這兩套方案產生了嚴重分歧,他們爭論不休,很難決斷。
就在這一年(1995年), Sun公司將Oak語言改名為Java并正式推向市場,而且Sun還推出了自己的瀏覽器:HotJava。這款瀏覽器可以將Java作為腳本嵌入到網頁中實現跟用戶的交互,即Java Applet。當時網景公司跟Sun公司結成聯盟,也在自己的Navigator瀏覽器中實現了相應的功能。但是后來他們發現這種方式過于復雜,所以就想開發一種跟Java語言類似,但使用起來更加簡單的語言。這項任務就交給了新錄用的布蘭登·艾奇,他當時34歲。
雖然布蘭登·艾奇當時的主要方向和興趣是函數式編程,對Java并不感興趣,但他還是僅用了10天時間就完成了新腳本的設計(當然其中包含了很多不嚴謹的地方)。本書的主角JS就這么誕生了。
對于布蘭登·艾奇個人來說,除了是JS的創建者之外,還有一件事情廣為人知。
2008年,布蘭登·艾奇曾經向當時轟動一時的“Proposition 8”(加州8號提案)及其支持者進行捐款。這份提案的內容是反對同性戀婚姻,在當時遭到很多美國人的反對,其依據是美國所謂的“自由”,不過依然有眾多的支持者。他們雙方為了各自的立場展開了拉票大戰,據說這次拉票的規模僅次于美國總統大選的拉票!而且這次事件還被拍成了電影《8號提案》。
2014年3月底,布蘭登·艾奇出任網景的后身Mozilla的CEO(原來是CTO)。大名鼎鼎的Firefox(火狐瀏覽器)就是Mozilla的產品。但是,布蘭登·艾奇在出任僅10日后就被迫辭職,反對的原因竟然是他支持過“8號提案”!
雖然布蘭登·艾奇做CEO的時間并不長,但是其貢獻是有目共睹的。真正的自由大概并不是一味放縱自己,而是《論語》中的“隨心所欲不逾矩”吧!
巧的是我們現在所學的JavaScript其實并不是科學技術,只是別人所制定的一套“規矩”罷了,而學好的標準正是“隨心所欲不逾矩”。
- 嵌入式軟件系統測試:基于形式化方法的自動化測試解決方案
- C#完全自學教程
- Learn Programming in Python with Cody Jackson
- Cybersecurity Attacks:Red Team Strategies
- Advanced Express Web Application Development
- 創意UI:Photoshop玩轉APP設計
- 跟戴銘學iOS編程:理順核心知識點
- Data Science Algorithms in a Week
- Simulation for Data Science with R
- Anaconda數據科學實戰
- Android移動應用項目化教程
- 分布式數據庫HBase案例教程
- 透視C#核心技術:系統架構及移動端開發
- Python程序設計:基礎與實踐
- Mastering Magento Theme Design