JS和ES
每一個學習JS的同學都聽說過ES5,ES6,但是,是否所有的同學都清除的知道他們之間的關係呢?我們通常認爲這兩個是一個東西,事實上他們的關係如下:
從上面的圖中我們清除的看到,他們不是並列關係,而是包含關係,那麼下面就分別介紹一下
ECMAScript
核心,它本身並沒有輸入和輸出的定義,這門語言和瀏覽器也沒有依賴關係。瀏覽器只是提供了語言的宿主環境,同時提供了這門語言的實現以及一些本地化的擴展。
既然瀏覽器是宿主環境,那就還存在別的宿主環境:比如Node,比如Adobe Flash
ECMAScript規定了這門語言的:
- 語法
- 類型
- 語句
- 關鍵字
- 保留字
- 操作符
- 對象
這就說明,我們也可以寫一門語言作爲ECMAScript的實現,就像JavaScript一樣,我們只需要:
- 支持ECMAScript描述的所有類型 值 對象 屬性 函數 以及程序語法和語義
- 支持Unicode
注意:
- JSON對象是原生ECMAScript支持的
DOM 文檔對象模型
在瀏覽器中,基於ECMAScript實現的DOM已經成爲了JS這門語言的重要組成部分
DOM就是通過HTML描述的,頁面元素的樹狀結構對象,就是下面這個東西:
我們需要注意這麼幾個概念:
- DOM是一種標準,這種標準規定了如何通過HTML來映射對象,以簡化對於HTML中表達的各個節點的操作
- ECMAScript和DOM的關係是:瀏覽器中用符合ECMAScript標準的語言實現了DOM標準
- 可以使用別的語言實現DOM
DOM規定了下面這些東西:
- HTML映射對象,對象的操作
- 鼠標,用戶事件等
- CSS樣式接口
- 遍歷文檔樹的接口
BOM 瀏覽器對象模型
DOM對象是頁面中,用HTML編寫的元素的映射,而BOM對象是瀏覽器對象的映射,通過BOM,我們可以且不限於可以做下面的事情:
- 彈出新的窗口
- 移動 縮放 關閉瀏覽器
- 支持cookies
- 獲得 window 或者 navigator對象
目前BOM的標準由HTML5纔有標準可以遵循,所以之前各個瀏覽器中對於BOM功能的支持都不盡相同,有了HTML5,BOM在未來的某一天會真正的統一。