[TOC]
# JavaScript簡介
* * * * *
JavaScript誕生于1995年。當時,它的主要目的是處理以前由服務器端語言的一些輸入驗證操作。
如今,JavaScript是一種專為與網頁交互而設計的**腳本語言**,所謂“腳本語言”,指的是它不具備開發操作系統的能力,而是只用來編寫控制其他大型應用程序的“腳本”。
一個完整的JavaScript實現應該由下列三個不同的部分組成:
* **核心(ECMAScript)**,由ECMA-262定義,提供核心語言功能。
* **文檔對象模型(DOM)**,提供訪問和操作網頁內容的方法和接口。
* **瀏覽器對象模型(BOM)**,提供與瀏覽器交互的方法和接口。
* * * * *
### 1.1 ECMAScript
**歷史**
* 1996年8月,微軟模仿JavaScript開發了一種相近的語言,取名為JScript(JavaScript是Netscape的注冊商標,微軟不能用),首先內置于IE 3.0。Netscape公司面臨喪失瀏覽器腳本語言的主導權的局面。
* 1997年7月,ECMA組織發布262號標準文件(ECMA-262)的第一版,規定了瀏覽器腳本語言的標準,并將這種語言稱為ECMAScript。這個版本就是ECMAScript 1.0版。ECMAScript和JavaScript的關系是,前者是后者的規格,后者是前者的一種實現。在日常場合,這兩個詞是可以互換的。
ECMAScript只用來**標準化**JavaScript這種語言的**基本語法結構**,與部署環境相關的標準都由其他標準規定,比如DOM的標準就是由W3C組織(World Wide Web Consortium)制定的。
ECMAScript與Web瀏覽器沒有依賴關系。實際上,這門語言本身并不包含輸入和輸出定義。
ECMA-262定義的只是這門語言的**基礎**,而在此基礎上可以構建更完善的腳本語言。我們常見的Web瀏覽器只是ECMAScript實現可能的**宿主環境之一**。
ECMA-262規定的內容包括:**語法、類型、語句、關鍵字、保留字、操作符、對象。**
* * * * *
### 1.2 文檔對象模型(DOM)
DOM全稱為**“文檔對象模型”**(Document Object Model),是針對XML但經過拓展用于HTML的**應用程序接口**(API,Application Programming Interface),它的作用是將網頁轉為一個**JavaScript對象**,從而可以用腳本進行各種**操作**(比如增刪改換內容)。
DOM整個Web頁面映射為一個**多層節點結構**。即瀏覽器會根據DOM模型,將**結構化文檔**解析成一系列**某種類型的節點**(這些節點又包含著不同類型的數據),再由這些節點組成一個樹狀結構(DOM Tree)。所有的節點和最終的樹狀結構,都有規范的對外接口。
DOM提供訪問和操作網頁內容的**方法和接口**。
* * * * *
### 1.3 瀏覽器對象模型(BOM)
BOM全稱為**“瀏覽器對象模型”**,它提供了與**瀏覽器交互**的方法與接口,可以控制瀏覽器顯示的頁面以外的部分。
HTML5中,BOM的主要方面以納入規范標準。
- 前言
- 第一章 JavaScript簡介
- 第三章 基本概念
- 3.1-3.3 語法、關鍵字和變量
- 3.4 數據類型
- 3.5-3.6 操作符、流控制語句(暫略)
- 3.7函數
- 第四章 變量的值、作用域與內存問題
- 第五章 引用類型
- 5.1 Object類型
- 5.2 Array類型
- 5.3 Date類型
- 5.4 基本包裝類型
- 5.5 單體內置對象
- 第六章 面向對象的程序設計
- 6.1 理解對象
- 6.2 創建對象
- 6.3 繼承
- 第七章 函數
- 7.1 函數概述
- 7.2 閉包
- 7.3 私有變量
- 第八章 BOM
- 8.1 window對象
- 8.2 location對象
- 8.3 navigator、screen與history對象
- 第九章 DOM
- 9.1 節點層次
- 9.2 DOM操作技術
- 9.3 DOM擴展
- 9.4 DOM2和DOM3
- 第十章 事件
- 10.1 事件流
- 10.2 事件處理程序
- 10.3 事件對象
- 10.4 事件類型
- 第十一章 JSON
- 11.1-11.2 語法與序列化選項
- 第十二章 正則表達式
- 12.1 創建正則表達式
- 12.2-12.3 模式匹配與RegExp對象
- 第十三章 Ajax
- 13.1 XMLHttpRequest對象
- 你不知道的JavaScript
- 一、作用域與閉包
- 1.1 作用域
- 1.2 詞法作用域
- 1.3 函數作用域與塊作用域
- 1.4 提升
- 1.5 作用域閉包
- 二、this與對象原型
- 2.1 關于this
- 2.2 全面解析this
- 2.3 對象
- 2.4 混合對象“類”
- 2.5 原型
- 2.6 行為委托
- 三、類型與語法
- 3.1 類型
- 3.2 值
- 3.3 原生函數