JavaScript,你從哪裏來?(下)

上文咱們講到了 ECMAScript 標準的制定,各個瀏覽器廠商依據標準實現 JavaScript,可是事情到這裏還沒結束,能夠說 ECMAScript 標準的制定只是 JavaScript 的起點。還沒看到上篇文章的同窗歡迎點擊連接。html

JavaScript,你從哪裏來?(上)前端

JavaScript的真正含義

有不少同窗有這樣的問題,既然 JavaScript 是基於 ECMAScript 實現的,那麼兩者有什麼區別呢?雖然現在 JavaScript 和 ECMAScript 經常被人們用來表示相同的含義,可是 JavaScript 的真正含義比 ECMAScript 中規定的多,完整的 JavaScript 實際上是由三個不一樣的部分組成的:程序員

  • ECMAScript,由 ECMA-262 定義,提供了語言的核心功能
  • DOM(文檔對象模型),提供訪問和操做網頁內容的方法和接口
  • BOM(瀏覽器對象模型),提供與瀏覽器交互的方法和接口

JavaScript

ECMAScript

ECMA-262所定義的 ECMAScript 只是描述了這門語言的基礎,包括如下這些內容:編程

  • 語法
  • 類型
  • 語句
  • 關鍵字
  • 保留字
  • 操做符
  • 對象

ECMAScript 定義的這些內容與實現的宿主平臺沒有關係,不論是在 Web 瀏覽器上仍是在大名鼎鼎的 Node 上,咱們能夠看到基本的語法都是類似的,不一樣的是在 Web 瀏覽器上可使用操做網頁內容的 DOM 的接口,而在 Node 上可使用操做系統和文件系統的接口。ECMAScript 只是提供了一個基礎,在這個基礎上能夠構建更加一個更加完善的環境(好比 JavaScript 和 Node)。瀏覽器

ECMAScript 1.01997 年發佈,至今已通過去了很長的一段時間了,在這麼長的時間裏,ECMAScript 也更新了許屢次版本,在這些版本中,有那麼一個版本你必定曾有所耳聞,無論你是否是前端工程師,無論你是否使用 JavaScript。是哪一個版本呢?就是你們常說的 ES6,它的全稱是 ECMAScript 6.0。常常看到有同窗疑惑 ES2015 和 ES6 是什麼關係?實際上是這樣的,由於 ES6 是在 2015 年發佈的,又被稱爲 ES2015,因此 ES2015 和 ES6 實際上是同一個東西。固然 ES6 也不是最後一個版本,最新發布的版本已經到了 2019 年發佈的 ES10bash

DOM

講完了 ECMAScript 咱們來接着講講 DOM 吧。DOM 的全稱是 Document Object Model,即文檔對象模型。DOM 是 XML 和 HTML 文檔的編程接口,它提供了對文檔的結構化描述,定義了一種方式使得腳本程序能夠對該結構進行訪問和操做,從而改變真實頁面的結構、樣式以及內容。DOM 能夠將整個頁面文檔解析成爲一個由節點和對象組成的結構體,好比下面這個 HTML 文檔:服務器

<html>
    <head>
        <title>Sample Page</title>
    </head>
    <body>
        <p>Hello World!</p>
    </body>
</html>
複製代碼

通過映射爲 DOM 以後,這個 HTML 頁面對應的 DOM 結構以下圖所示:cookie

DOM

DOM 的出現是爲了保持 Web 跨平臺的能力,在 DHTML(Dynamic HTML,動態HTML) 出現後,頁面能夠支持直接在客戶端進行 HTML 文檔的更新,而不須要每次更新都到服務器上獲取 HTML,頁面不須要從新加載,可是因爲 Netscape 和微軟對於 DHTML 的開發各自有想法,這樣下去平臺的差別性愈來愈大,會致使程序難以兼容多個平臺,此時負責制定 Web 通訊標準的 W3C(World Wide Web Consortium,萬維網聯盟)站了出來,開始着手進行 DOM 標準的制定,程序員終於再一次獲得了拯救。前端工程師

DOM 標準分爲幾個級別:app

  • DOM Level 1:於 1998 年 10 月成爲 W3C 的推薦標準。DOM 1級由兩個模塊組成:DOM 核心(DOM Core)和 DOM HTML。DOM 核心規定了如何映射基於 XML 的文檔結構,DOM HTML 在 DOM 核心的基礎上進行了擴展,增長了針對 HTML 的對象和方法。
  • DOM Level 2:DOM 2級是對 DOM 1級的擴展,新增長了鼠標事件和用戶界面事件和事件處理的接口,還增長了對於 CSS 的支持,以及提供了對 DOM 進行遍歷的接口。
  • DOM Level 3:DOM 3級進一步進行了擴展,引入了統一加載和保存文檔的方法,新增了驗證文檔的方法,開始支持 XML 1.0 規範。

BOM

BOM 指的是 Browser Object Model,瀏覽器對象模型,它是瀏覽器窗口的一個抽象,使用 BOM 能夠支持對瀏覽器窗口的控制,常見的有這樣的一些功能是由 BOM 提供的:

  • 彈出新瀏覽器窗口
  • 移動、縮放和關閉瀏覽器
  • 瀏覽器詳細信息的 navigator 對象
  • 瀏覽器加載頁面的 location 對象
  • 用戶顯示器分辨率詳細信息的 screen 對象
  • 對 cookies 的支持
  • 像 XMLHttpRequest 這樣的對象

總結

這篇文章中咱們一步步梳理了 JavaScript 誕生的全過程,首先 Netscape 的布蘭登·艾奇設計出 LiveScript,與 Sun 公司合做並搭上 Java 的順風車,把 LiveScript 更名爲 JavaScript,並在 1995 年第一次進行了發佈並取得了巨大的成功。而後因爲微軟的攪局,發佈了 JScript,兩個 JavaScript 的同時存在,致使了差別,不得不制定一個關於 JavaScript 的標準,因而 ECMAScript 在 1997 年誕生了。JavaScript 基於 ECMAScript 進行實現,但又不止於此,還包含了許多 ECMAScript 中沒有描述的內容,如 DOM 和 BOM 等,這些都進一步的豐富了 JavaScript的內涵,使它成爲了一門更加完善和強大的腳本語言,受到了全世界開發者的熱捧。最後引用大神的一句話:

Atwood's Law: Any application that can be written in JavaScript, will eventually be written in JavaScript. (一切能用 JavaScript 實現的,最終都會使用 JavaScript 實現。)

相關文章
相關標籤/搜索