成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

《JavaScript 闖關(guān)記》之簡(jiǎn)介

baihe / 1123人閱讀

摘要:瀏覽器只是實(shí)現(xiàn)的宿主環(huán)境之一,其他宿主環(huán)境包括和。年月,版發(fā)布,成為國(guó)際標(biāo)準(zhǔn)。事件定義了事件和事件處理的接口。對(duì)于已經(jīng)正式納入標(biāo)準(zhǔn)的來(lái)說(shuō),盡管各瀏覽器都實(shí)現(xiàn)了某些眾所周知的共同特性,但其他特性還是會(huì)因?yàn)g覽器而異。

JavaScript 是面向 Web 的編程語(yǔ)言,絕大多數(shù)現(xiàn)代網(wǎng)站都使用了 JavaScript,并且所有的現(xiàn)代 Web 瀏覽器(電腦,手機(jī),平板)均包含了 JavaScript 解釋器。 這使得 JavaScript 能夠稱(chēng)得上史上使用最廣泛的編程語(yǔ)言。 JavaScript 也是前端開(kāi)發(fā)工程師必須掌握的三種技能之一:描述網(wǎng)頁(yè)內(nèi)容的 HTML、描述網(wǎng)頁(yè)樣式的 CSS、以及描述網(wǎng)頁(yè)行為的 JavaScript。

JavaScript 是一門(mén) 動(dòng)態(tài)的、弱類(lèi)型的、面向?qū)ο蟮摹⒔忉屝偷?/strong> 編程語(yǔ)言,非常適合面向?qū)ο蠛秃瘮?shù)式的編程風(fēng)格。JavaScript 的語(yǔ)法來(lái)自于 Java,它的一等函數(shù)(first-class function)來(lái)自于 Scheme,它的基于原型(prototype-based)的繼承來(lái)自于 Self。但學(xué)習(xí)本課程不必去了解那些(Java/Scheme/Slef)語(yǔ)言或熟悉那些術(shù)語(yǔ)。

JavaScript 起源

時(shí)間:1995年

人物:Brendan Eich(布蘭登·艾奇)

背景:那個(gè)時(shí)候,絕大多數(shù)因特網(wǎng)用戶(hù)都是用速度僅為28.8kbit/s的「貓」上網(wǎng),為了完成簡(jiǎn)單的表單驗(yàn)證,必須把表單數(shù)據(jù)發(fā)送到服務(wù)器端才能確定用戶(hù)是否沒(méi)有填寫(xiě)某個(gè)必填域、是否輸入了無(wú)效的值,每次操作需等待30秒以上才會(huì)有結(jié)果,這無(wú)疑是在慢性自殺。

事件:當(dāng)時(shí)走在技術(shù)革新最前沿的 Netscape 公司指派 Brendan Eich 開(kāi)發(fā)一種客戶(hù)端語(yǔ)言,用來(lái)處理這種簡(jiǎn)單的驗(yàn)證,它就是 JavaScript。JavaScript 原名 LiveScript,Netscape 為了搭上媒體熱炒 Java 的順風(fēng)車(chē),才把 LiveScript 改名為 JavaScript。(所以 Java 和 JavaScript 的關(guān)系,就相當(dāng)于雷鋒和雷峰塔的關(guān)系。)

自此以后,JavaScript 逐漸成為市面上常見(jiàn)瀏覽器必備的一項(xiàng)特色功能。如今,JavaScript 的用途早已不再局限于簡(jiǎn)單的數(shù)據(jù)驗(yàn)證,而是具備了與瀏覽器窗口及其內(nèi)容等幾乎所有方面交互的能力。今天的 JavaScript 已經(jīng)成為一門(mén)功能全面的編程語(yǔ)言,能夠處理復(fù)雜的計(jì)算和交互,擁有了閉包、匿名(lambda,拉姆達(dá))函數(shù),甚至元編程等特性。

JavaScript 從一個(gè)簡(jiǎn)單的輸入驗(yàn)證器發(fā)展成為一門(mén)強(qiáng)大的編程語(yǔ)言,完全出乎人們的意料。應(yīng)該說(shuō),它既是一門(mén)非常簡(jiǎn)單的語(yǔ)言,又是一門(mén)非常復(fù)雜的語(yǔ)言。說(shuō)它簡(jiǎn)單,是因?yàn)閷W(xué)會(huì)使用它只需片刻功夫;而說(shuō)它復(fù)雜,是因?yàn)橐嬲莆账鼊t需要數(shù)年時(shí)間。

JavaScript 實(shí)現(xiàn)

隨著 JavaScript 的普及,微軟公司在 IE 瀏覽器中也加入了名為 JScript 的 JavaScript 實(shí)現(xiàn),由于沒(méi)有標(biāo)準(zhǔn)規(guī)定 JavaScript 的語(yǔ)法和特性,導(dǎo)致市面上存在多個(gè)版本的 JavaScript 實(shí)現(xiàn),且互不兼容,因此 JavaScript 標(biāo)準(zhǔn)化問(wèn)題被提上了議事日程。

1997年,歐洲計(jì)算機(jī)制造商協(xié)會(huì)(ECMA,European Computer Manufactures Association)定義了名為ECMAScript(發(fā)音為 ek-ma-script)的腳本語(yǔ)言標(biāo)準(zhǔn),它是通用的,與平臺(tái)無(wú)關(guān)的語(yǔ)言標(biāo)準(zhǔn)。自此以后,瀏覽器開(kāi)發(fā)商開(kāi)始致力于將 ECMAScript 作為各自 JavaScript 實(shí)現(xiàn)的基礎(chǔ)。雖然基礎(chǔ)相同,但具體實(shí)現(xiàn)在不同瀏覽器上卻略有差異。

JavaScript 和 ECMAScript 通常被人們用來(lái)表達(dá)相同的含義,但 JavaScript 的含義卻比 ECMAScript 中規(guī)定的要多得多。一個(gè)完整的 JavaScript 實(shí)現(xiàn)應(yīng)該由下面三個(gè)不同的部分組成。

核心(ECMAScript)

文檔對(duì)象模型(DOM)

瀏覽器對(duì)象模型(BOM)

核心(ECMAScript)

ECMAScript 標(biāo)準(zhǔn)由 語(yǔ)法、數(shù)據(jù)類(lèi)型、語(yǔ)句、關(guān)鍵字、保留字、運(yùn)算符、對(duì)象 組成。它與 Web 瀏覽器沒(méi)有任何依賴(lài)關(guān)系,并且這門(mén)語(yǔ)言本身并不包含輸入和輸出定義。ECMAScript 定義的只是這門(mén)語(yǔ)言的基礎(chǔ),而在此基礎(chǔ)之上可以構(gòu)建更完善的腳本語(yǔ)言。

Web 瀏覽器只是 ECMAScript 實(shí)現(xiàn)的宿主環(huán)境之一,其他宿主環(huán)境包括 Node 和 Adobe Flash。宿主環(huán)境不僅提供基本的 ECMAScript 實(shí)現(xiàn),同時(shí)也會(huì)提供該語(yǔ)言的擴(kuò)展(例如:DOM、BOM),這些擴(kuò)展則利用 ECMAScript 的核心類(lèi)型和語(yǔ)法提供更多更具體的功能。

JavaScript 是 Web 瀏覽器對(duì) ECMAScript 標(biāo)準(zhǔn)的實(shí)現(xiàn),ActionScript 是 Adobe Flash 對(duì) ECMAScript 標(biāo)準(zhǔn)的實(shí)現(xiàn)。

ECMAScript 歷史

1997年,ECMAScript 1版發(fā)布。

1998年6月,ECMAScript 2版發(fā)布。

1999年12月,ECMAScript 3版發(fā)布。

2000年,ECMAScript 4開(kāi)始醞釀,最終這個(gè)版本沒(méi)有通過(guò)。

2009年12月,ECMAScript 5版發(fā)布。

2011年6月,ECMAscript 5.1版發(fā)布,成為國(guó)際標(biāo)準(zhǔn)。

2015年6月,ECMAScript 6正式通過(guò),成為國(guó)際標(biāo)準(zhǔn)。

擴(kuò)展閱讀「阮一峰 的《ECMAScript 6 入門(mén)》」
http://es6.ruanyifeng.com/#do...

3.0版是一個(gè)巨大的成功,在業(yè)界得到廣泛支持,成為通行標(biāo)準(zhǔn),奠定了 JavaScript 語(yǔ)言的基本語(yǔ)法,以后的版本完全繼承。直到今天,初學(xué)者一開(kāi)始學(xué)習(xí) JavaScript,其實(shí)就是在學(xué)3.0版的語(yǔ)法。

文檔對(duì)象模型(DOM)

文檔對(duì)象模型(DOM,Document Object Model)是用于 HTML 的應(yīng)用程序編程接口(API),它把整個(gè)頁(yè)面映射為一個(gè)多層節(jié)點(diǎn)結(jié)構(gòu)。HTML 頁(yè)面中的每個(gè)組成部分都是某種類(lèi)型的節(jié)點(diǎn),這些節(jié)點(diǎn)又包含著不同類(lèi)型的數(shù)據(jù)??聪旅孢@個(gè) HTML 頁(yè)面:


    
        Sample Page
    
    
        

Hello World!

通過(guò) DOM 創(chuàng)建的這個(gè)表示文檔的樹(shù)形圖,開(kāi)發(fā)人員獲得了控制頁(yè)面內(nèi)容和結(jié)構(gòu)的主動(dòng)權(quán)。借助 DOM 提供的 API,開(kāi)發(fā)人員可以輕松自如地刪除、添加、替換或修改任何節(jié)點(diǎn)。

由于 Netscape 和 微軟實(shí)現(xiàn)的 DOM 互不兼容,負(fù)責(zé)制定 Web 通信標(biāo)準(zhǔn)的 W3C(World Wide Web Consortium,萬(wàn)維網(wǎng)聯(lián)盟)開(kāi)始著手規(guī)劃 DOM。

DOM 1級(jí):

DOM 核心:映射文檔結(jié)構(gòu),簡(jiǎn)化對(duì)文檔中任意部分的操作和訪問(wèn)。

DOM HTML:在 DOM 核心的基礎(chǔ)上,添加了針對(duì) HTML 的對(duì)象和方法。

DOM 2級(jí):

DOM 視圖:定義了跟蹤不同文檔視圖的接口。

DOM 事件:定義了事件和事件處理的接口。

DOM 樣式:定義了基于 CSS 為元素應(yīng)用樣式的接口。

DOM 遍歷和范圍:定義了遍歷和操作文檔樹(shù)的接口。

DOM 3級(jí):

DOM 加載和保存:引入了以統(tǒng)一方式加載和保存文檔的方法。

DOM 驗(yàn)證:新增了驗(yàn)證文檔的方法。

DOM 核心擴(kuò)展。

注意:

DOM 并不是只針對(duì) JavaScript 的,很多別的語(yǔ)言也都實(shí)現(xiàn)了 DOM。

DOM 0級(jí)標(biāo)準(zhǔn)是不存在的,它只是 DOM 歷史坐標(biāo)中的一個(gè)參照點(diǎn)而已。

瀏覽器對(duì)象模型(BOM)

瀏覽器對(duì)象模型(BOM,Browser Object Model)是用于瀏覽器的應(yīng)用程序編程接口(API),它把整個(gè)瀏覽器窗口映射為一個(gè)對(duì)象。從根本上講,BOM 只處理瀏覽器窗口和框架,但人們習(xí)慣上也把所有針對(duì)瀏覽器的 JavaScript 擴(kuò)展算作 BOM 的一部分,例如:

彈出新瀏覽器窗口的功能。

移動(dòng)、縮放和關(guān)閉瀏覽器窗口的功能。

提供瀏覽器詳細(xì)信息的 navigator 對(duì)象。

提供瀏覽器所加載頁(yè)面的詳細(xì)信息的 localtion 對(duì)象。

提供用戶(hù)顯示器分辨率詳細(xì)信息的 screen 對(duì)象。

對(duì) cookies 的支持。

XMLHttpRequest 和 IE 的 ActiveXObject 這樣的自定義對(duì)象。

BOM 最讓人頭疼的是沒(méi)有相關(guān)的規(guī)范和標(biāo)準(zhǔn),每個(gè)瀏覽器都有獨(dú)有的實(shí)現(xiàn),這個(gè)問(wèn)題在 HTML5 中得到了解決,HTML5 致力于把很多 BOM 功能寫(xiě)入正式規(guī)范。

小結(jié)

JavaScript 是一種專(zhuān)為網(wǎng)頁(yè)交互而設(shè)計(jì)的腳本語(yǔ)言,由下列3個(gè)不同的部分組成:

核心(ECMAScript),由 ECMA-262 定義,提供核心語(yǔ)言功能。

文檔對(duì)象模型(DOM),提供訪問(wèn)和操作網(wǎng)頁(yè)內(nèi)容的方法和接口。

瀏覽器對(duì)象模型(BOM),提供與瀏覽器交互的方法和接口。

JavaScript 的這3個(gè)組成部分,在當(dāng)前5個(gè)主要瀏覽器(IE、FireFox、Chrome、Safari 和 Opera)中都得到了不同程度的支持。其中,所有瀏覽器對(duì) ECMAScript 3 版本的支持大體上都還不錯(cuò),而對(duì) ECMAScript 5 的支持程度越來(lái)越高,但對(duì) DOM 的支持則彼此相差比較多。對(duì)于已經(jīng)正式納入 HTML5 標(biāo)準(zhǔn)的 BOM 來(lái)說(shuō),盡管各瀏覽器都實(shí)現(xiàn)了某些眾所周知的共同特性,但其他特性還是會(huì)因?yàn)g覽器而異。

擴(kuò)展閱讀「Standard ECMA-262 5.1 Edition 」
http://www.ecma-international...

擴(kuò)展閱讀「ECMAScript 5 瀏覽器兼容一覽表」
http://caniuse.mojijs.com/Hom...

更多

關(guān)注微信公眾號(hào)「劼哥舍」回復(fù)「答案」,獲取關(guān)卡詳解。
關(guān)注 https://github.com/stone0090/javascript-lessons,獲取最新動(dòng)態(tài)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86412.html

相關(guān)文章

  • JavaScript 闖關(guān)

    摘要:對(duì)象數(shù)組初始化表達(dá)式,闖關(guān)記之上文檔對(duì)象模型是針對(duì)和文檔的一個(gè)。闖關(guān)記之?dāng)?shù)組數(shù)組是值的有序集合。數(shù)組是動(dòng)態(tài)的,根闖關(guān)記之語(yǔ)法的語(yǔ)法大量借鑒了及其他類(lèi)語(yǔ)言如和的語(yǔ)法。 《JavaScript 闖關(guān)記》之 DOM(下) Element 類(lèi)型 除了 Document 類(lèi)型之外,Element 類(lèi)型就要算是 Web 編程中最常用的類(lèi)型了。Element 類(lèi)型用于表現(xiàn) XML 或 HTML 元素...

    mj 評(píng)論0 收藏0
  • JavaScript 闖關(guān)

    摘要:本課程之所以叫做闖關(guān)記,是因?yàn)椴糠终鹿?jié)精心設(shè)計(jì)了挑戰(zhàn)關(guān)卡,通過(guò)提供更多的實(shí)戰(zhàn)機(jī)會(huì),讓大家可以循序漸進(jìn)地有目的地有挑戰(zhàn)地開(kāi)展學(xué)習(xí)。課程結(jié)構(gòu)及目錄以下目錄只是初步構(gòu)想,課程結(jié)構(gòu)及內(nèi)容會(huì)根據(jù)實(shí)際情況隨時(shí)進(jìn)行調(diào)整。 為何寫(xiě)作此課程 stone 主要負(fù)責(zé)基于 Web 的企業(yè)內(nèi)部管理系統(tǒng)的開(kāi)發(fā),雖然能夠熟練地使用 JavaScript,但隨著對(duì) JavaScript 的理解越來(lái)越深,才發(fā)現(xiàn)自己尚...

    curried 評(píng)論0 收藏0
  • JavaScript 闖關(guān)初探

    摘要:使用元素嵌入代碼時(shí),只需為指定屬性。需要注意的是,帶有屬性的元素不應(yīng)該在其和元素之間再包含額外的代碼。在包含外部文件時(shí),必須將屬性設(shè)置為指向相應(yīng)文件的。所有元素都會(huì)按照他們?cè)陧?yè)面中出現(xiàn)的先后順序依次被解析。關(guān)注,獲取最新動(dòng)態(tài)。 當(dāng)學(xué)習(xí)一門(mén)新的編程語(yǔ)言的時(shí)候,應(yīng)該邊學(xué)邊做,反復(fù)演練以加深理解。因此,你需要一個(gè) JavaScript 解釋器。幸運(yùn)的是,每一個(gè) Web 瀏覽器都包含一個(gè) Ja...

    atinosun 評(píng)論0 收藏0
  • JavaScript 闖關(guān)語(yǔ)法

    摘要:的語(yǔ)法大量借鑒了及其他類(lèi)語(yǔ)言如和的語(yǔ)法。也就是說(shuō),關(guān)鍵字變量函數(shù)名和所有的標(biāo)識(shí)符都必須采取一致的大小寫(xiě)形式。中的字面量有字符串?dāng)?shù)字布爾值對(duì)象數(shù)組函數(shù)正則表達(dá)式,以及特殊的值。這是為了不破壞語(yǔ)法而特意選定的語(yǔ)法。 JavaScript 的語(yǔ)法大量借鑒了 C 及其他類(lèi) C 語(yǔ)言(如 Java 和 Perl)的語(yǔ)法。因此,熟悉這些語(yǔ)言的開(kāi)發(fā)人員在接受 JavaScript 更加寬松的語(yǔ)法時(shí),...

    xiangzhihong 評(píng)論0 收藏0
  • JavaScript 闖關(guān)函數(shù)

    摘要:把上面的函數(shù)聲明改為等價(jià)的函數(shù)表達(dá)式,就會(huì)在執(zhí)行期間導(dǎo)致錯(cuò)誤。換句話(huà)說(shuō),引用的是函數(shù)據(jù)以執(zhí)行的環(huán)境對(duì)象當(dāng)在網(wǎng)頁(yè)的全局作用域中調(diào)用函數(shù)時(shí),對(duì)象引用的就是。這兩個(gè)方法的用途都是在特定的作用域中調(diào)用函數(shù),實(shí)際上等于設(shè)置函數(shù)體內(nèi)對(duì)象的值。 函數(shù)是一段代碼,它只定義一次,但可以被執(zhí)行或調(diào)用任意次。在 JavaScript 里,函數(shù)即對(duì)象,程序可以隨意操控它們。比如,可以把函數(shù)賦值給變量,或者作為...

    alphahans 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<