一.誕生/歷史/實現(xiàn)
? js的誕生
源于快速發(fā)展的Web端操作需求(非法值或空值驗證)與效率極其低下的前后端網(wǎng)絡(luò)交互所產(chǎn)生的矛盾。早期互聯(lián)網(wǎng)網(wǎng)速較慢阅悍,將客戶端輸入傳回后臺進(jìn)行各種簡單的驗證操作(例如非法值驗證)好渠,在效率方面非常低下昨稼,于是js應(yīng)運而生。
? js的歷史
?網(wǎng)頁的大小與復(fù)雜性不斷增加拳锚,瀏覽器客戶端能處理的信息卻十分有限假栓。
????????????1995年2月 / 布蘭登·艾奇 / liveScript。?
????????????1997年完成ECMA標(biāo)準(zhǔn)的確立霍掺。
?js的實現(xiàn)
js由三個部分組成:ECMAScript核心匾荆;文檔對象模型DOM;瀏覽器對象模型BOM杆烁;
? ? ? ? ? ? ECMAScript:
????????????由ECMA定義的基礎(chǔ)內(nèi)容:包括語法牙丽,類型,語句兔魂,關(guān)鍵字烤芦,保留字,操作符析校,對象构罗。需要注意的是,ECMA并沒有定義js的宿主環(huán)境智玻,我們最常見的Web端js只是ECMAScript最常見的宿主環(huán)境遂唧。宿主環(huán)境實現(xiàn)ECMA的定義,并增加語言擴(kuò)展吊奢,增強ECMA與和環(huán)境的交互能力盖彭。
? ? ? ? ? ? 文檔對象類型DOM:
????????????言簡意賅地說,DOM就是針對XML和HTML應(yīng)用程序的編程接口事甜。他將HTML文檔編輯為一棵具有多層結(jié)構(gòu)的樹谬泌,HTML或XML文檔中的每個組成部分都可以從節(jié)點中取得。借助DOM實現(xiàn)的ECMAScript API逻谦,開發(fā)人員得以操縱這些節(jié)點。本質(zhì)上為工程人員提供了訪問與操作網(wǎng)頁內(nèi)容的方法與接口陪蜻。(或者更確切一些說邦马,叫做規(guī)范)
? ? ????????為什么要使用DOM呢?原因無他宴卖,只是為了保護(hù)Web的跨平臺性滋将,避免不同瀏覽器支持不同的DOM導(dǎo)致Web產(chǎn)生實質(zhì)性的技術(shù)分裂。
????????????DOM級別是值得記錄的知識點:DOM大致可以分為兩級:
????????????????????DOM1級主要定義了映射基于XML的文檔結(jié)構(gòu)(DOM Core)症昏,以及針對HTML簡單的對象與方法(DOM HTML)随闽。
????????????????????DOM2級擴(kuò)充了大量常用的HTML操作模塊:DOM視圖(不是特別懂),DOM事件(事件以及處理事件的接口)肝谭,DOM樣式(基于CSS為元素應(yīng)用樣式的接口)掘宪,DOM遍歷與范圍(遍歷與操作文檔樹的接口)蛾扇。另外還有DOM3級,主要定義DOM加載與保存的模塊魏滚,因為工程中涉及不多镀首,在此不多做了解。
? ? ? ? ? ? 瀏覽器對象類型BOM:
? ? ? ? ? ? 最簡單的理解方式 -->針對瀏覽器所作的jscript擴(kuò)展就叫做BOM鼠次,功能也就局限于與瀏覽器進(jìn)行交互和訪問更哄。一些BOM的典型擴(kuò)展:(使用js)
????????????????????移動/縮放/彈出/關(guān)閉瀏覽器窗口;
????????????????????提供瀏覽器詳細(xì)信息的navigator類腥寇;
????????????????????????提供瀏覽器加載信息的location類成翩;
????????????????????????提供分辨率信息的screen類;
????????????????????????操縱Cookie赦役;
????????????????????????XMLHTTPRequest(用的太頻繁捕传,不多提了);