第一章 Javascript簡介

1.1 JavaScript簡史

??Javascript誕生于1995年晃琳。在Javascript問世之前,必須將表單中的數(shù)據(jù)發(fā)送到服務(wù)器端才能確定用戶是否填寫了某個必填域朗兵,是否輸入了無效的值。Netscape Navigator(上古瀏覽器)希望通過Javascript來解決這個問題。

??1995年姐刁,就職與Netscape公司的Brendan Eich,開始著手為2月份即將發(fā)布的Netscape Navigator2開發(fā)一種名為LiveScript的腳本語言烦味。為了趕在發(fā)布日期之前完成LiveScript的開發(fā)聂使,Netscape與Sun公司建立了一個開發(fā)聯(lián)盟,在Netscape Navigator2正式發(fā)布前夕,Netscape為了搭上媒體熱炒的Java的順分車柏靶,臨時將LiveScript更名為JavaScript弃理。

??由于JavaScript 1.0獲得了巨大的成功,因此Netscape隨即在Netscape Navigator 3中又發(fā)布了JavaScript 1.1宿礁。Web雖然羽翼未豐案铺,但用戶關(guān)注度屢創(chuàng)新高。在這樣的背景下梆靖,在Netscape Navigator 3發(fā)布不久后控汉,微軟隨即在其產(chǎn)品Internet Explorer 3中加入了名為JScript的JavaScript實現(xiàn)。

??微軟推出JScript之后返吻,意味著市場上擁有了3個不同的JavaScript版本:Netscape Navigator中的JavaScript姑子, IE中的JScript和ScriptEase中的CEnvi。與其他編程語言不同测僵,當(dāng)時還沒有標(biāo)準(zhǔn)規(guī)定JavaScript的語法和特性街佑,3個不同版本并存的局面已經(jīng)完全暴露了這個問題。隨著業(yè)界的擔(dān)心日益加劇捍靠,JavaScript的標(biāo)準(zhǔn)化問題被提上了日程沐旨。

??1997年,以JavaScript 1.1為藍(lán)本的建議被提交給了歐洲計算機(jī)制造商協(xié)會(ECMA榨婆,European Computer Manufactures Association)磁携。該協(xié)會指定39號技術(shù)委員會(TC39,Technical Committee #39)負(fù)責(zé)標(biāo)準(zhǔn)化一種“通用的良风,跨平臺谊迄,供應(yīng)商中立的腳本語言的語法和語義”。TC39由來自Netscape烟央,微軟统诺,Sun,Borland以及其他關(guān)注腳本語言發(fā)展的公司的程序員組成疑俭,經(jīng)過數(shù)月的努力粮呢,他們完成了ECMA-262——定義一種名為ECMAScript的新腳本語言的標(biāo)準(zhǔn)。

??第二年钞艇,ISO/IEC(International Organization for Standardization and International Electrotechnical Commission鬼贱,國際標(biāo)準(zhǔn)化組織和國際電工委員會)也采用了ECMAScript作為標(biāo)準(zhǔn)。自此以后香璃,各瀏覽器廠商就將ECMAScript作為各自JavaScript實現(xiàn)的基礎(chǔ)这难,也在不同程度上取得了成功。

1.2 JavaScript實現(xiàn)

??雖然JavaScript 和ECMAScript通常被人們表達(dá)成相同的含義葡秒,但JavaScript的含義卻比ECMA-262中規(guī)定的要多的多姻乓。一個完整的JavaScript實現(xiàn)應(yīng)該包含以下三個部分:

  • 核心(ECMAScript實現(xiàn))
  • 文檔對象模型(DOM)
  • 瀏覽器對象模型(BOM)


    image.png

1.2.1 ECMAScript

??由ECMA-262規(guī)定的ECMAScript與web瀏覽器并沒有依賴關(guān)系嵌溢。實際上,這門語言本身并不包含輸入輸出定義蹋岩。ECMA-262定義的只是這門語言的基礎(chǔ)赖草,而在此基礎(chǔ)上可以構(gòu)建更加完善的腳本語言。大致上來說剪个,ECMA-262規(guī)定了以下組成部分:

  • 語法
  • 類型
  • 語句
  • 關(guān)鍵字
  • 保留字
  • 操作符
  • 對象

??ECMAScript就是對實現(xiàn)以上標(biāo)準(zhǔn)的語言的描述秧骑。JavaScript實現(xiàn)了ECMAScript,Adobe ActionScript同樣實現(xiàn)了ECMAScript扣囊。ECMAScript最近一版是第5版乎折,發(fā)布于2009年。而ECMAScript的第一版本質(zhì)上與JavaScript 1.1相同侵歇,只不過刪除了所有針對特定瀏覽器的代碼骂澄。ECMA-262給出了ECMAScript兼容的定義。要想成為ECMAScript的實現(xiàn)惕虑,必須做到:

  • 支持ECMA-262描述的所有“類型坟冲,值,對象溃蔫,屬性健提,函數(shù)以及程序句法和語義”
  • 支持Unicode字符標(biāo)準(zhǔn)

??到2008年,五大主流瀏覽器(IE伟叛,F(xiàn)irefox私痹,Safari,Chrome和Opera)全部做到了與ECMA-262兼容痪伦。


image.png

1.2.2 文檔對象模型(DOM)

??文檔對象模型(DOM侄榴,Document Object Model)是針對XML但經(jīng)過擴(kuò)展用于HTML的應(yīng)用程序編程接口(API雹锣,Application Programming Interface)网沾。

??DOM分為三級。DOM1級(DOM Level 1)于1988年3月成為W3C的推薦標(biāo)準(zhǔn)蕊爵。DOM1級由兩個模塊組成:DOM Core和DOM HTML辉哥。其中,DOM Core規(guī)定如何映射基于XML的文檔結(jié)構(gòu)攒射,以便于簡化對于文檔中任意部分的訪問醋旦;DOM HTML則在DOM Core的基礎(chǔ)上加以擴(kuò)展,添加了針對HTML的對象和方法会放。

DOM并不只針對JavaScript饲齐,很多其他語言也實現(xiàn)了DOM。不過咧最,在瀏覽器中捂人,基于ECMAScript實現(xiàn)的DOM確實已經(jīng)成為JavaScript的重要組成部分御雕。

??如果說DOM1級的主要目標(biāo)是映射文檔結(jié)構(gòu),那么DOM2的目標(biāo)就要寬泛的多了滥搭。DOM2級在DOM1的基礎(chǔ)上引入了以下新模塊:

  • DOM Views:定義了跟蹤不同視圖文檔的接口(例如應(yīng)用CSS之前和之后的文檔)
  • DOM Events:定義了事件和事件處理接口
  • DOM Style:定義了基于CSS為元素定義樣式的接口
  • DOM Traversal and Range:定義了遍歷和操作文檔樹的接口

DOM2級事件請參考:http://www.reibang.com/p/622d994906f7

??DOM3則進(jìn)一步擴(kuò)展了DOM酸纲,引入了以統(tǒng)一方式加載和保存文檔的方式(定義在DOM Load and Save模塊);新增了文檔驗證的方法(定義在DOM Validation模塊)瑟匆。下面是主流瀏覽器對DOM的支持情況:


image.png

1.2.3 瀏覽器對象模型(BOM)

??瀏覽器對象模型(BOM闽坡,Browser Object Model)提供了訪問和操作瀏覽器窗口的接口。BOM經(jīng)常會導(dǎo)致的問題在于它作為JavaScript實現(xiàn)的一部分愁溜,卻沒有相關(guān)標(biāo)準(zhǔn)疾嗅。因此HTML5致力于把很多BOM功能納入正式規(guī)范。

??從根本上來講祝谚,BOM只處理瀏覽器窗口和框架宪迟;但人們習(xí)慣把所有針對瀏覽器的JavaScript擴(kuò)展都算作BOM的一部分。下面就是一些這樣的擴(kuò)展:

  • 彈出新瀏覽器窗口
  • 移動交惯,縮放和關(guān)閉瀏覽器窗口
  • 提供瀏覽器詳細(xì)信息的navigator對象
  • 提供瀏覽器所加載頁面詳細(xì)信息的location對象
  • 提供用戶顯示器分辨率詳細(xì)信息的screen對象
  • 對cookies的支持
    ??由于BOM沒有標(biāo)準(zhǔn)遵循次泽,因此每個瀏覽器廠商都有自己的實現(xiàn)。雖然也有一些事實標(biāo)準(zhǔn)席爽,例如window對象和navigator對象意荤,但每個瀏覽器廠商都會為這兩個對象乃至其他對象定義自己的屬性和方法。

1.3 JavaScript版本

??作為Netscape繼承人的Mozilla公司只锻,是目前唯一還在沿用最初JavaScript版本號的公司玖像。在Netscape將源代碼提交給Mozilla公司時,JavaScript在瀏覽器中的最后一個版本號是1.3齐饮。后來捐寥,隨著Mozilla基金會繼續(xù)開發(fā)JavaScript,添加新的特性祖驱,關(guān)鍵字和語法握恳,JavaScript的版本號持續(xù)遞增。下表列出了Netscape/Mozilla瀏覽器中JavaScript版本號的遞增過程:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捺僻,一起剝皮案震驚了整個濱河市乡洼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匕坯,老刑警劉巖束昵,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異葛峻,居然都是意外死亡锹雏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門术奖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來礁遵,“玉大人匿辩,你說我怎么就攤上這事¢欢” “怎么了铲球?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長晰赞。 經(jīng)常有香客問我稼病,道長,這世上最難降的妖魔是什么掖鱼? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任然走,我火速辦了婚禮,結(jié)果婚禮上戏挡,老公的妹妹穿的比我還像新娘芍瑞。我一直安慰自己,他們只是感情好褐墅,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布拆檬。 她就那樣靜靜地躺著,像睡著了一般妥凳。 火紅的嫁衣襯著肌膚如雪竟贯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天逝钥,我揣著相機(jī)與錄音屑那,去河邊找鬼。 笑死艘款,一個胖子當(dāng)著我的面吹牛持际,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哗咆,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼蜘欲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了岳枷?” 一聲冷哼從身側(cè)響起芒填,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤呜叫,失蹤者是張志新(化名)和其女友劉穎空繁,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朱庆,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡盛泡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了娱颊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片傲诵。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡凯砍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拴竹,到底是詐尸還是另有隱情悟衩,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布栓拜,位于F島的核電站座泳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏幕与。R本人自食惡果不足惜挑势,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啦鸣。 院中可真熱鬧潮饱,春花似錦、人聲如沸诫给。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽中狂。三九已至缕溉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吃型,已是汗流浹背证鸥。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留勤晚,地道東北人枉层。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像赐写,于是被迫代替她去往敵國和親鸟蜡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容