javascript是一種專為與網(wǎng)頁交互而設(shè)計(jì)的腳本語言蛾洛。
- ECMAScript,由ECMA-262定義雁芙,提供核心的語言功能
- 文檔對(duì)象模型(DOM)轧膘,提供訪問和操作網(wǎng)頁內(nèi)容的方法和接口;
- 瀏覽器對(duì)象模型(BOM),提供與瀏覽器交互的方法和接口
ECMAScript
由ECMA-262定義的ECMAScript與web瀏覽器沒有依賴關(guān)系兔甘。實(shí)際上這門語言本身并不包含輸入和輸出的定義谎碍。ECMA-262定義的只是這門語言的基礎(chǔ),而在此基礎(chǔ)之上可以構(gòu)建更完善的腳本語言洞焙。我們常見的web瀏覽器只是ECMAScript實(shí)現(xiàn)可能的宿主環(huán)境之一蟆淀。宿主環(huán)境不僅提供基本的ECMAScript實(shí)現(xiàn)拯啦,同時(shí)也會(huì)提供該語言的擴(kuò)展,以便語言與環(huán)境之間的對(duì)接交互熔任。而這些擴(kuò)展--如DOM褒链,則利用ECMAScript的核心類型和語法提供更多更具體的功能,以便實(shí)現(xiàn)針對(duì)環(huán)境的操作疑苔。其他宿主環(huán)境包括Node(一種服務(wù)端javascript平臺(tái))和Adobe Flash甫匹。
ECMA-262標(biāo)準(zhǔn)規(guī)定了一下組成部分:
- 語法
- 類型
- 語句
- 關(guān)鍵字
- 保留字
- 操作符
- 對(duì)象
ECMAScript就是對(duì)實(shí)現(xiàn)該標(biāo)準(zhǔn)規(guī)定的各個(gè)方面內(nèi)容的語言的描述。javascript實(shí)現(xiàn)了ECMAScript惦费,Adobe ActionScript同樣也實(shí)現(xiàn)了ECMAScript.
文檔對(duì)象模型(DOM)
DOM(Document Object Model)是針對(duì)xml但經(jīng)過擴(kuò)展用于html的應(yīng)用程序編程接口(API,Application Programming Interface)兵迅。DOM把整個(gè)頁面映射為一個(gè)多層節(jié)點(diǎn)結(jié)構(gòu)。html或xml頁面中的每個(gè)組成部分都是某種類型的節(jié)點(diǎn)趁餐,這些節(jié)點(diǎn)又包含著不同類型的數(shù)據(jù)喷兼。
通過DOM創(chuàng)建的樹形圖,開發(fā)者獲得了控制頁面內(nèi)容和結(jié)構(gòu)的主動(dòng)權(quán)后雷。借助DOM提供的API季惯,開發(fā)者可以刪除、添加臀突、替換或修改任何節(jié)點(diǎn)勉抓。
瀏覽器對(duì)象模型(BOM)
開發(fā)者使用BOM可以控制瀏覽器顯示的頁面以外的部分。而BOM真正與眾不同的地方(也是經(jīng)常會(huì)導(dǎo)致問題的地方)候学,還是它作為javascript實(shí)現(xiàn)的一部分但卻沒有相關(guān)的標(biāo)準(zhǔn)藕筋。這個(gè)問題在HTML5中得到了解決,HTML5致力于把很多BOM功能寫入正式規(guī)范梳码。HTML5發(fā)布后隐圾,很多關(guān)于BOM的困惑煙消云散。
從根本上講掰茶,BOM只處理瀏覽器窗口和框架暇藏;但人們習(xí)慣上也把所有針對(duì)瀏覽器的javascript擴(kuò)展算作BOM的一部分。example:
- 彈出新瀏覽器窗口的功能濒蒋;
- 移動(dòng)盐碱、收縮、關(guān)閉瀏覽器窗口的功能沪伙;
- 提供瀏覽器詳細(xì)信息的navigator對(duì)象瓮顽;
- 提供瀏覽器所加載頁面的詳細(xì)信息的location對(duì)象;
- 提供用戶顯示器分辨率詳細(xì)信息的screen對(duì)象围橡;
- 對(duì)cookies 的支持暖混;
- 向XMLHttpRequest 和 IE的ActionXObject這樣自定義的對(duì)象。
由于沒有BOM標(biāo)準(zhǔn)可以遵循翁授,因此每個(gè)瀏覽器都有自己的實(shí)現(xiàn)儒恋。雖然也存在一些事實(shí)標(biāo)準(zhǔn)善绎,例如要有window對(duì)象和navigator對(duì)象等,但每個(gè)瀏覽器都會(huì)為這兩個(gè)對(duì)象乃至其他對(duì)象定義自己的屬性和方法〗刖。現(xiàn)在有了HTML5,BOM實(shí)現(xiàn)的細(xì)節(jié)有望朝著兼容性越來越高的方向發(fā)展禀酱。