第1章 JavaScript是什么
1.1 歷史簡述
1997年,JavaScript 1.1 作為一個(gè)草案提交給歐洲計(jì)算機(jī)制造商協(xié)會(ECMA)。第39技術(shù)委員會(TC39)被委派來“標(biāo)準(zhǔn)化一個(gè)通用、跨平臺、中立于廠商的腳本語言的語法和語義”(http://www.ecma-international.org/memento/TC39.htm)。TC39錘煉出了ECMA-262,該標(biāo)準(zhǔn)定義了叫做ECMAScript的全新腳本語言。在接下來的幾年里,國際標(biāo)準(zhǔn)化組織及國際電工委員會(ISO/IEC)也采納ECMAScript作為標(biāo)準(zhǔn)(ISO/IEC-16262)。
1.2 JavaScript實(shí)現(xiàn)
JavaScript實(shí)現(xiàn)是由以下3個(gè)部分組成的:
-核心(ECMAScript)
-文檔對象模型(DOM)
-瀏覽器對象模型(BOM)
1.2.1 ECMAScript
ECMAScript描述了以下內(nèi)容:
語法;
類型;
語句;
關(guān)鍵字;
保留字;
運(yùn)算符;
對象。
ECMAScript僅僅是一個(gè)描述,定義了腳本語言的所有屬性、方法和對象。其他的語言可以實(shí)現(xiàn)ECMAScript來作為功能的標(biāo)準(zhǔn),JavaScript就是這樣。
1.2.1.1 ECMAScript的版本
最新的ECMA-262的版本是第三版,于1999年12月發(fā)布。
第一版:刪除來與瀏覽器相關(guān)的代碼的JavaScript1.1。
第二版:大部分更新本質(zhì)上是編輯性的,未特別添加、更改和刪除內(nèi)容。
第三版:提供了對字符串處理、錯(cuò)誤定義和數(shù)組輸出的更新。同時(shí),它還增加了正則表達(dá)式、新的控制語句、try...catch異常處理的支持,以及一些為使標(biāo)準(zhǔn)國際化而做的小改動(dòng)。標(biāo)志著ECMAScript成為一種真正的編程語言。
1.2.1.2 何謂ECMAScript符合性
一個(gè)腳本語言必需滿足以下四項(xiàng)基本原則:
符合的實(shí)現(xiàn)必須按照ECMA-262中所描述的支持所有的“類型、值、對象、屬性、函數(shù)和程序語法及語義;
符合的實(shí)現(xiàn)必須支持Unicode字符標(biāo)準(zhǔn)(UCS);
符合的實(shí)現(xiàn)可以增加沒有在ECMA-262中指定的“額外的類型、值、對象、屬性和函數(shù)”。
符合的實(shí)現(xiàn)可以支持沒有在ECMA-262中定義的“程序和正則表達(dá)式語法”即可以替換或者擴(kuò)展內(nèi)建的正則表達(dá)式支持。
1.2.1.3 Web瀏覽器中的ECMAScript支持
以下版本支持ECMA-262第三版:Netscape 6.0+(Mozilla 0.6.0+)、Internet Explorer 5.5+、Opera 7.2+、Safari 1.0+/Konqueror~2.0+
1.2.2 DOM
DOM(文檔對象模型)是HTML和XML的應(yīng)用程序接口(API)。DOM將整個(gè)頁面規(guī)劃成由節(jié)點(diǎn)層級構(gòu)成的文檔。HTML或XML頁面的每個(gè)部分都是一個(gè)節(jié)點(diǎn)的衍生物。
請考慮下面的HTML頁面:
<head>
<title>Sample Page</title>
</head>
<body>
<p>Hello World!</p>
</body>
</html>
這段代碼可以用DOM繪制成一個(gè)節(jié)點(diǎn)層次圖。
DOM通過創(chuàng)建樹來表示文檔,從而使開發(fā)者對文檔的內(nèi)容和結(jié)構(gòu)具有空前的控制力。用DOM API可以輕松地刪除、添加和替換節(jié)點(diǎn)。
1.2.2.1 為什么DOM必不可少
保持Web的跨平臺特性,Web通信標(biāo)準(zhǔn)的團(tuán)體W3C(World Wide Web Consortium)開始制定DOM。
1.2.2.2 DOM的各個(gè)Level
DOM Level 1 是W3C于1998年10月提出的。它由兩個(gè)模塊構(gòu)成,即DOM Core和DOM HTML。前者提供了基于 XML 的文檔的結(jié)構(gòu)圖,以方便訪問和操作文檔的任意部分;后者添加了一些 HTML 專用的對象和方法,從而擴(kuò)展了DOM Core。
DOM Level 1 只有一個(gè)目標(biāo),即規(guī)劃文檔的結(jié)構(gòu)。
DOM Level 2 引入了幾種 DOM 新模塊,用于處理新的接口類型:
DOM 視圖--描述跟蹤文檔的各種視圖(即 CSS 樣式化之前和 CSS 樣式化之后的文檔)的接口;
DOM 事件--描述事件的接口;
DOM 樣式--描述處理基于 CSS 樣式的接口;
DOM 遍歷和范圍--描述遍歷和操作文檔樹的接口。
DOM Level 3 引入了以統(tǒng)一的方式載入和保存文檔的方法(包含在新模塊 DOM Load and Save 中)以及驗(yàn)證文檔(DOM Validation)的方法,從而進(jìn)一步擴(kuò)展了 DOM 。在Level 3 中,DOM Core 被擴(kuò)展為支持所有的 XML 1.0 特性,包括 XML Infoset、XPath 和 XML Base。
1.2.2.3 其他 DOM
可縮放矢量圖形(SVG)1.0;
數(shù)學(xué)標(biāo)記語言(MathML)1.0;
同步多媒體集成語言(SMIL)。
1.2.2.4 Web 瀏覽器中的 DOM 支持
1.2.3 BOM(瀏覽器對象模型)
BOM 主要處理瀏覽器窗口和框架,擴(kuò)展部分包括:
彈出新的瀏覽器窗口;
移動(dòng)、關(guān)閉瀏覽器窗口以及調(diào)整窗口大?。?br />
提供 Web 瀏覽器詳細(xì)信息的導(dǎo)航對象;
提供裝載到瀏覽器中頁面的詳細(xì)信息的定位對象;
提供用戶屏幕分辯率詳細(xì)信息的屏幕對象;
對 Cookie 的支持;
IE 擴(kuò)展了 BOM,加入了 ActiveXObject 類,可以通過 JavaScript 實(shí)例化 ActiveX 對象。
1.3 小結(jié)
本章介紹了 JavaScript 這種客戶端 Web 瀏覽器腳本語言,了解了構(gòu)成 JavaScript 完整實(shí)現(xiàn)的各個(gè)部分:
JavaScript 的核心 ECMAScript 描述了該語言的語法和基本對象;
DOM 描述了處理頁面內(nèi)容的方法和接口;
BOM 描述了與瀏覽器進(jìn)行交互的方法和接口。