第1章 從零開始
1.1 為什麼選擇JavaScript?
1.1.1 用戶的偏好--B/S模式
1.1.2 在什麼情況下用JavaScript
1.1.3 對JavaScript的一些誤解
1.1.3.1 JavaScript和Java的關(guān)係
1.1.3.2 披著C外衣的Lisp
1.1.3.3 關(guān)於JavaScript的思維定勢
1.1.3.4 JavaScript是為業(yè)餘愛好者設(shè)計的?
1.1.3.5 JavaScript是物件導(dǎo)向的嗎
1.1.3.6 其他誤解
1.1.4 警惕!腳本誘惑
1.1.5 隱藏在簡單表像下的複雜度
1.1.6 令人迷惑的選擇--錦上添花還是雪中送炭     第一部 概論
# 第1章 從零開始
1.1 為什麼選擇JavaScript?
1.1.1 用戶的偏好--B/S模式
1.1.2 在什麼情況下用JavaScript
1.1.3 對JavaScript的一些誤解
1.1.3.1 JavaScript和Java的關(guān)係
1.1.3.2 披著C外衣的Lisp
1.1.3.3 關(guān)於JavaScript的思維定勢
1.1.3.4 JavaScript是為業(yè)餘愛好者設(shè)計的?
1.1.3.5 JavaScript是物件導(dǎo)向的嗎
1.1.3.6 其他誤解
1.1.4 警惕!腳本誘惑
1.1.5 隱藏在簡單表像下的複雜度
1.1.6 令人困惑的選擇--錦上添花還是雪中送炭
1.1.7 回到問題上來
1.2 JavaScript的應(yīng)用範圍
1.2.1 客戶端的JavaScript
1.2.2 伺服器端的JavaScript
1.2.3 其他環(huán)境中的JavaScript
1.3 JavaScript的版本
1.3.1 瀏覽器中的JavaScript版本
1.3.2 其他版本
1.4 一些值得留意的特質(zhì)
1.4.1 小把戲--神奇的魔法代碼
1.4.2 為客戶端服務(wù)--經(jīng)典Hello World!的另一種JavaScript實作
1.4.3 資料互動--JavaScript的強大功能
1.4.4 JavaScript表面上的禁忌及如何突破這些禁忌
1.5 安全性與執(zhí)行效率
1.5.1 資料安全--永遠的敏感話題
1.5.2 實戰(zhàn)!攻擊與防範
1.5.3 不容馬虎--時時關(guān)注性能
1.6 一個範例--JavaScript編寫的計算器
1.6.1 從需求分析開始--什麼是計算器?
1.6.2 系統(tǒng)設(shè)計--如何實現(xiàn)計算器?
1.6.3 系統(tǒng)實作--計算器的最終實作
1.6.4 持續(xù)改進--迭代的軟體開發(fā)流程
1.7 學(xué)習(xí)與使用JavaScript的幾點建議
1.7.1 像程式設(shè)計師的四個境界
1.7.2 吝惜你的程式碼
1.7.3 學(xué)會在環(huán)境中調(diào)試
1.7.4 警惕那些小缺陷
1.7.5 思考先於實踐--不要輕易動手寫程式碼
1.7.6 時刻回頭--聖賢也無法完全預(yù)知未來
1.8 關(guān)於本書的其餘部分
第2章 瀏覽器中的JavaScript
2.1 嵌入網(wǎng)頁的可執(zhí)行內(nèi)容
2.1.1 在哪裡裝載JavaScript程式碼
2.1.2 關(guān)於程式碼的Script標籤
2.1.3 我的程式碼什麼時候被執(zhí)行--不同執(zhí)行期的JavaScript程式碼
2.1.4 拿來主義--引入外部的JavaScript檔
2.2 賞心悅目的特效
2.2.1 生命在於運動--DHTML的效果
2.2.2 換一種風(fēng)格--CSS的力量
2.2.3 用JavaScript操作DOM--一個可拖曳視窗的範例
2.3 使用JavaScript來與使用者互動
2.3.1 建立一個彈出式幫助和進度條
2.3.2 填錯了哦
2.4 繞過腳本陷阱
2.4.1 現(xiàn)實並不總是完美的
2.4.2 不能完全相信你所見到的
2.5 總結(jié)
第3章 開發(fā)環(huán)境與除錯方法
3.1 我可以用什麼來寫腳本--適合寫JavaScript的文字編輯器
3.2 來自瀏覽器的支援
3.2.1 主流瀏覽器
3.2.2 非主流瀏覽器
3.3 整合開發(fā)環(huán)境
3.3.1 什麼是整合開發(fā)環(huán)境
3.3.2 我需要整合開發(fā)環(huán)境嗎
3.3.3 適合JavaScript的整合開發(fā)環(huán)境
3.4 調(diào)試工具--提升開發(fā)效率的利器
3.4.1 什麼是調(diào)試
3.4.2 原始的調(diào)試方法--利用輸出語句、「反射」機制和偵錯物件來進行調(diào)試
3.4.3 適合JavaScript的調(diào)試工具
3.5 定位程式碼和呼叫堆疊
3.5.1 Step by Step--單步與斷點
3.5.2 監(jiān)視記憶體
3.5.3 追蹤問題的來源--查看呼叫堆疊
3.5.4 遇到麻煩了--為什麼我追蹤不到程式碼
3.6 瀏覽器捕獲異常
3.6.1 異常處理機制--一個try/catch/finally模式的範例
3.6.2 異常的種類
3.6.3 應(yīng)該在什麼時候「吃掉」異常
3.7 總結(jié)
第二部分 JavaScript核心
第4章 語言結(jié)構(gòu)
4.1 JavaScript的基本文法
4.1.1 字元集
4.1.2 大小寫敏感
4.1.3 分隔符號
4.1.4 字、句子和段落
4.1.5 分號
4.1.6 標記
4.1.7 註
4.1.8 保留字
4.2 常數(shù)和變數(shù)
4.2.1 常數(shù)與變數(shù)
4.2.2 變數(shù)的標識符
4.2.3 變數(shù)的型別
4.2.4 變數(shù)的宣告
4.2.5 變數(shù)的作用域
4.3 表達式和運算子
4.3.1 表達式
4.3.2 運算子概述
4.3.3 算術(shù)運算子
4.3.4 關(guān)係運算子
4.3.5 邏輯運算子
4.3.6 位元運算子
4.3.7 賦值運算子
4.3.8 其他運算子
4.3.8.1 條件運算子
4.3.8.2 逗號運算子
4.3.8.3 物件運算子
4.3.8.4 類型運算子
4.3.8.5 void運算子
4.3.8.6 函數(shù)呼叫運算子
4.4 控制語句
4.4.1 表達式語句
4.4.2 語句區(qū)塊
4.4.3 條件語句
4.4.4 循環(huán)語句
4.4.5 跳轉(zhuǎn)語句
4.4.6 異常處理語句
4.4.7 其他語句
4.4.7.1 var語句
4.4.7.2 function語句
4.4.7.3 with語句
4.4.7.4 空語句
4.5 總結(jié)
第5章 資料型別
5.1 基本資料型態(tài)
5.1.1 數(shù)值
5.1.2 字串--一個字串相關(guān)操作的範例
5.1.3 布林型
5.2 數(shù)組和物件
5.2.1 數(shù)組
5.2.2 物件--一個建構(gòu)函數(shù)的範例
5.3 函數(shù)型別--一個函數(shù)與閉包的範例
5.4 神奇的null和undefined
5.4.1 null
5.4.2 undefined--獨一無二的類型
5.5 正規(guī)表示式
5.5.1 正規(guī)表示式常數(shù)
5.5.2 正規(guī)表示式物件
5.6 值類型和引用類型
5.6.1 什麼是值和值的參考
5.6.2 使用值和使用參考
5.6.3 值與引用的相互轉(zhuǎn)換:裝箱與拆箱
5.7 類型識別與型別轉(zhuǎn)換
5.7.1 運行時類型識別--兩個運行的類型識別的例子
5.7.2 類型的自動轉(zhuǎn)換及其範例
5.7.3 強制型別轉(zhuǎn)換及其範例
5.7.4 進階用法--一個自訂類型轉(zhuǎn)換的範例
5.8 警惕數(shù)值陷阱
5.8.1 困惑--浮點數(shù)的精確度問題
5.8.2 誤差的修正及其範例
5.9 總結(jié)
第6章 函數(shù)
6.1 函數(shù)定義與函數(shù)呼叫
6.1.1 函數(shù)的定義
6.1.1.1 宣告式函數(shù)定義與函數(shù)表達式及其範例
6.1.1.2 JavaScript函數(shù)的奧妙-魔法程式碼
6.1.2 函數(shù)的呼叫
6.2 函數(shù)的參數(shù)
6.2.1 形參與實參
6.2.2 Arguments物件
6.2.2.1 一個使用Arguments物件偵測形參的範例
6.2.2.2 一個使用Arguments物件接收任一數(shù)參數(shù)的範例
6.2.2.3 一個使用Arguments物件模擬函數(shù)重載的範例
6.2.3 參數(shù)型別匹配--一個利用arguments實作函數(shù)重載機制的範例
6.3 函數(shù)的呼叫者和擁有者
6.3.1 函數(shù)的呼叫者
6.3.2 函數(shù)的擁有者--一個為函數(shù)指定擁有者的範例
6.3.3 動態(tài)呼叫--外來的擁有者
6.4 函數(shù)常數(shù)與閉包
6.4.1 匿名的函數(shù)
6.4.2 函數(shù)引用
6.4.3 函數(shù)參數(shù)與函數(shù)傳回值及其範例
6.4.4 進階用法--閉包作為局部域與延遲求值
6.5 高階抽象--Function類型與函數(shù)模版
6.5.1 動態(tài)建立函數(shù)--利用Function實作Lambda算符的範例
6.5.2 模式--函數(shù)工廠及其實例
6.6 總結(jié)
第7章 對象
7.1 什麼是物件
7.2 物件的屬性與方法
7.2.1 物件的內(nèi)建屬性
7.2.2 為物件新增和刪除屬性
7.2.3 反射機制--枚舉物件屬性
7.3 物件的建構(gòu)
7.3.1 建構(gòu)子--一個雙精確度浮點數(shù)封裝類別的範例
7.3.2 預(yù)設(shè)構(gòu)造與拷貝構(gòu)造
7.3.3 物件常數(shù)
7.4 物件的銷毀和儲存單元的回收
7.5 JavaScript的內(nèi)建物件
7.5.1 Math物件
7.5.2 Date物件--建立一個簡單的日曆
7.5.3 Error物件
7.5.4 其他內(nèi)建物件
7.5.5 特殊的物件--全域物件與呼叫物件
7.6 總結(jié)
第8章 集合
8.1 陣列與陣列元素
8.1.1 陣列的建構(gòu)
8.1.2 陣列常數(shù)
8.1.3 陣列元素
8.2 陣列物件與方法
8.2.1 找出元素
8.2.2 新增和刪除元素
8.2.3 集合運算及其範例
8.2.3.1 join()方法
8.2.3.2 reverse()方法
8.2.3.3 sort()方法
8.2.3.4 concat()方法
8.2.3.5 slice()方法
8.2.3.6 splice()方法
8.2.3.7 toSgring()方法和toLocaleString()方法
8.3 哈希表
8.3.1 什麼是哈希表
8.3.2 哈希表的建構(gòu)
8.3.3 實作一個簡單的HashTable類型
8.4 進階用法--集合運算與閉包
8.5 總結(jié)
第9章 字符串
9.1 字串的建構(gòu)
9.1.1 字串常數(shù)
9.1.2 轉(zhuǎn)義序列
9.1.3 字串建構(gòu)子
9.2 字串的使用
9.2.1 比較字串
9.2.2 抽取與檢索子字串
9.2.3 連接拆分字串
9.2.4 字串的模式比對--一個字串格式校驗的範例
9.2.5 其他方法
9.3 字串與字元陣列
9.4 字串與文字處理--JavaScript棋譜閱讀器(一)
9.4.1 需求分析--什麼是棋譜與棋譜閱讀器
9.4.2 系統(tǒng)設(shè)計--棋譜與棋盤資料的字串描述
9.4.3 系統(tǒng)實作--解析與處理棋譜
9.4.4 完整的棋譜閱讀器
9.5 總結(jié)
第10章 正規(guī)表示式
10.1 什麼是正規(guī)表示式
10.1.1 正規(guī)表示式的概念
10.1.2 JavaScript中的正規(guī)表示式
10.2 正規(guī)表示式的規(guī)則
10.2.1 直接量字元
10.2.2 字元類別和布林操作
10.2.3 重複
10.2.4 選擇、分組與引用
10.2.5 指定匹配的位置
10.2.6 標誌-進階模式匹配的規(guī)則
10.3 模式匹配
10.3.1 用於模式匹配的String方法及其範例
10.3.2 用於模式匹配的RegExp方法
10.3.2.1 一個使用exec()方法從身分證號碼取得生日的範例
10.3.2.2 一個使用test()方法遍歷字串的範例
10.4 關(guān)於正規(guī)表示式包裝物件
10.4.1 RegExp物件-利用正規(guī)表示式實作全文檢索
10.4.2 RegExp的實例屬性
10.5 強大的正規(guī)表示式
10.5.1 分析正規(guī)表示式的局部
10.5.2 一個例子--強大的線上編輯器
10.5.3 建構(gòu)新的文法--一個在JSVM中實作JSVM2解析器的範例
10.6 進階用法
10.7 用正規(guī)表示式處理文字
10.7.1 建立一個計價公式編輯器
10.7.1.1 需求分析--什麼是計價公式編輯器
10.7.1.2 系統(tǒng)實作--計價公式編輯器的實作
10.7.2 建立一個同步滾動歌詞播放器
10.7.2.1 需求分析--什麼是同步滾動歌詞播放器
10.7.2.2 系統(tǒng)設(shè)計與實作--處理LRC歌詞
10.8 總結(jié)
第三部分 瀏覽器與DOM
第11章 瀏覽器物件
11.1 Window物件--最基本的瀏覽器物件
11.1.1 Window物件概覽
11.1.2 Window物件的生命週期
11.1.3 Window物件的屬性與方法
11.1.4 一個多視窗應(yīng)用的範例
11.2 Document物件--瀏覽器視窗文檔內(nèi)容的代表
11.2.1 Document物件概覽
11.2.2 動態(tài)產(chǎn)生的文檔
11.2.3 Document物件的基本資訊
11.2.4 Document物件的外觀屬性
11.2.5 Document子物件介面
11.2.5.1 一個遍歷Anchors物件的例子
11.2.5.2 一個顛倒圖片的範例
11.3 對話框和狀態(tài)列
11.3.1 建立一個簡單對話框
11.3.2 其他類型的對話框
11.3.2.1 模擬對話框--建立一個視窗對話框及一個對話框阻塞進行的範例
11.3.2.2 showModalDialog和showModelessDialog--非W3C或ECMAScrip標準
11.3.3 狀態(tài)列
11.4 框架--上層的Window物件
11.4.1 多框架應(yīng)用
11.4.2 框架之間的關(guān)係
11.4.3 框架的命名
11.4.4 子框架中的JavaScript
11.4.5 框架的應(yīng)用--多頁籤顯示
11.4.5.1 什麼是頁籤
11.4.5.2 頁籤的實作--建立一個包含頁籤的頁面
11.5 表單和表單物件
11.5.1 Form物件及其範例
11.5.2 定義表單元素
11.5.3 用戶端表單校驗及其範例
11.5.4 建立一個通用的客戶端表單校驗元件
11.6 其他內(nèi)建物件
11.6.1 Navigator物件--瀏覽器總體資訊的代表
11.6.2 Screen物件--提供顯示器解析度和可用色彩數(shù)量資訊
11.6.3 Location物件--目前視窗中顯示文件的URL的代表
11.6.4 History物件--一個有趣的物件
11.7 總結(jié)
第12章 文檔物件模型
12.1 什麼是DOM
12.1.1 把文件表示為樹
12.1.2 樹的節(jié)點
12.1.3 DOM物件的通用屬性與方法
12.1.4 HTML結(jié)構(gòu)與DOM物件的關(guān)係--用JavaScript透過DOM來操作HTML文件
12.2 DOM與瀏覽器實作
12.2.1 關(guān)於DOM HTML API
12.2.2 DOM的等級與特性
12.2.3 DOM的一致性
12.2.4 差異性--瀏覽器的DOM方言
12.3 一組「盒子」--DOM元素
12.3.1 嵌套的「盒子」
12.3.2 「盒子」與「盒子」內(nèi)容的分類
12.4 建立和刪除節(jié)點
12.4.1 建構(gòu)全新的節(jié)點
12.4.2 平面展開--透過文件元素直接建立
12.4.3 回收空間--刪除不用的節(jié)點
12.5 存取和操縱DOM節(jié)點
12.5.1 打開每一個盒子--遍歷節(jié)點
12.5.2 弄清楚層級關(guān)係--父子與兄弟
12.5.3 如何搜尋特定節(jié)點
12.5.4 克隆節(jié)點--一個使用cloneNode()複製表格的範例
12.5.5 移動節(jié)點及其範例
12.5.6 關(guān)於新增行和排序的小技巧
12.6 讀寫資料--新增、修改和刪除屬性
12.7 外觀與行為
12.7.1 DOM樣式屬性
12.7.2 控制DOM元素的顯示與隱藏
12.7.3 改變顏色和大小--一個簡單有趣的例子
12.7.4 改變位置--創(chuàng)造一個繞著圓圈旋轉(zhuǎn)的文字
12.7.5 編輯控制及其範例
12.7.6 改變樣式及其範例
12.7.7 改變行為
12.8 XML DOM
12.8.1 什麼是XML DOM
12.8.2 如何使用XML DOM--一個利用XML實現(xiàn)多層關(guān)聯(lián)下拉選擇框的範例
12.9 總結(jié)
第13章 事件處理
13.1 什麼是事件
13.1.1 訊息與事件回應(yīng)
13.1.2 瀏覽器的事件驅(qū)動機制
13.2 基本事件處理
13.2.1 事件和事件類型
13.2.2 事件的綁定
13.2.3 直接呼叫事件處理函數(shù)
13.2.4 事件處理函數(shù)的回傳值
13.2.5 帶參數(shù)的事件回應(yīng)及其範例
13.2.6 “this”關(guān)鍵字
13.3 標準事件模型
13.3.1 起泡與捕捉--瀏覽器的事件傳播
13.3.2 事件處理函數(shù)的註冊
13.3.3 把物件註冊為事件處理程序
13.3.4 事件模組與事件類型
13.3.5 關(guān)於Event介面
13.3.5.1 Event介面的屬性與方法
13.3.5.2 UIEvent介面的屬性
13.3.5.3 MouseEvent介面的屬性
13.3.5.4 MutationEvent介面
13.3.6 混合事件模型
13.3.7 合成事件
13.4 瀏覽器的事件處理模型實作
13.4.1 Internet Explorer事件模型
13.4.1.1 關(guān)於IE事件註冊
13.4.1.2 IE Event物件的屬性
13.4.1.3 IE中的事件起泡
13.4.2 Netscape 4事件模型
13.4.2.1 Netscape 4中的事件捕捉及其範例
13.4.2.2 Netscape 4 Event物件的屬性
13.5 回呼與使用者自訂事件
13.5.1 事件處理模式--一個實作簡單事件處理模式的範例
13.5.2 使用者事件介面的定義
13.5.3 事件代理與事件註冊--一個實現(xiàn)標準事件介面的範例
13.5.4 標準模式--事件分派與接收
13.6 一個例子--增強資料表
13.6.1 什麼是增強資料表
13.6.2 一個採用兩重table嵌套方式固定表頭的範例
13.6.3 可變列寬的實作
13.6.4 標記行--呈現(xiàn)有別於其他行的背景色
13.6.5 小技巧--將程式碼加入樣式表
13.7 總結(jié)
第14章 級聯(lián)樣式表
14.1 什麼是級聯(lián)樣式表
14.1.1 CSS樣式和樣式表
14.1.2 CSS的標準化
14.1.3 瀏覽器支援的CSS
14.2 JavaScript與CSS
14.2.1 CSS和DOM的關(guān)係
14.2.2 CSS和IE的關(guān)係
14.2.3 瀏覽器的CSS相容性
14.3 控制CSS改變頁面樣式
14.3.1 實現(xiàn)結(jié)構(gòu)與表現(xiàn)的分離及其範例
14.3.2 使用JwaScript和CSS實現(xiàn)頁面多種風(fēng)格的即時替換
14.4 總結(jié)
第15章 資料儲存的腳本化
15.1 什麼是cookie
15.1.1 瀏覽器和客戶端cookie
15.1.2 cookie的屬性
15.2 cookie的客戶端存取
15.2.1 cookie的儲存
15.2.2 cookie的讀取
15.3 cookie的限制
15.4 cookie範例--讓問候更加溫暖
15.5 cookie物件的封裝
15.6 什麼是userData
15.6.1 瀏覽器和客戶端userData
15.6.2 userData的宣告
15.6.3 userData的屬性與方法
15.7 userData的客戶端存取
15.7.1 userData的儲存與讀取
15.7.2 userData的安全性
15.8 userData的限制
15.9 userData與cookie的比較
15.10 userData範例--一個利用userData實作客戶端保存表單資料的範例
15.11 總結(jié)
第四部分 資料互動
第16章 同步與非同步
16.1 什麼是同步和非同步
16.2 超時設(shè)定和時間間隔
16.3 定時器使用--偵聽與攔截
16.3.1 標準模式--監(jiān)視器及其範例
16.3.2 使用定時器時應(yīng)注意的問題
16.4 一個例子--漂亮的Web時鐘
16.4.1 什麼是Web時鐘?
16.4.2 最簡單的Web時脈
16.4.3 Web時脈的設(shè)計
16.4.4 完整的Web時脈原始碼
16.5 總結(jié)
第17章 XML DOM和XML HTTP
17.1 什麼是XML DOM物件
17.1.1 XML DOM簡介
17.1.2 瀏覽器支援的XML DOM介面
17.1.2.1 XML DOM標準介面
17.1.2.2 IE的XML DOM元件
17.1.2.3 操作XML文件--一個使用MSXML操作XML文件的範例
17.2 XML DOM的版本相容性--XML DOM的跨瀏覽器應(yīng)用程式
17.3 XML DOM的錯誤處理
17.3.1 處理錯誤訊息的ParseError物件
17.3.2 包含錯誤訊息的文檔
17.4 XML DOM操作XML文件
17.4.1 訪問節(jié)點
17.4.2 建立新節(jié)點
17.4.3 移動和修改節(jié)點及其範例
17.4.4 讀寫節(jié)點屬性與讀寫資料
17.4.5 儲存文件
17.5 一個例子--JavaScript棋譜閱讀器(二)
17.5.1 用XML描述棋譜
17.5.2 將XML棋譜轉(zhuǎn)換為SGF棋譜
17.6 什麼是XML HTTP物件
17.6.1 XML HTTP物件簡介
17.6.2 瀏覽器支援的XML HTTP物件
17.7 透過XML HTTP發(fā)送請求
17.7.1 建立連線
17.7.2 發(fā)送請求
17.8 讀取並設(shè)定HTTP頭
17.8.1 什麼是HTTP頭
17.8.2 讀取並設(shè)定HTTP頭
17.9 伺服器應(yīng)答
17.9.1 同步和非同步應(yīng)答及其範例
17.9.2 包含應(yīng)答文字內(nèi)容的ResponseText 和ResponseXML
17.10 總結(jié)
第18章 Ajax簡介
18.1 什麼是Ajax
18.1.1 Ajax並不神秘
18.1.2 Ajax的應(yīng)用場景
18.1.3 Ajax的競爭對手--其他替代技術(shù)
18.2 Ajax初探--我的第一個Ajax程式
18.2.1 從常規(guī)應(yīng)用開始--一個簡單的即時聊天室
18.2.2 討厭的頁面刷新
18.2.3 無刷新解決方案--改進的聊天室
18.2.4 非同步工作--遲滯感的解決方案
18.3 Ajax原理剖析
18.3.1 XML HTTP即時通訊及一個簡單封裝了AjaxProxy物件的範例
18.3.2 資料動態(tài)顯示--Ajax改善互動體驗的重要特點
18.3.3 發(fā)揮XML的能力
18.3.4 用JavaScript綁定一切
18.3.5 應(yīng)用背後的標準
18.4 Ajax範例--即時聊天工具
18.4.1 什麼是即時聊天工具
18.4.2 需求分析--即時聊天功能的實作重點
18.4.3 系統(tǒng)實作--即時聊天功能的實作
18.4.4 小結(jié)
18.5 總結(jié)
第19章 標準與相容性
19.1 標準化組織
19.1.1 W3C和DOM標準
19.1.2 ECMA和JavaScript標準
19.1.3 網(wǎng)路標準
19.2 平臺和瀏覽器的兼容性
19.2.1 最小公分母法
19.2.2 防禦性編碼
19.2.3 客戶端探測器
19.2.4 特性偵測
19.2.5 實現(xiàn)標準
19.2.6 適度停止運轉(zhuǎn)
19.3 語言版本的兼容性
19.3.1 language屬性
19.3.2 版本測試
19.4 如何實作跨瀏覽器應(yīng)用程式
19.4.1 取捨--劃定支援範圍
19.4.2 基礎(chǔ)模組設(shè)計--獨立相容性偵測
19.4.3 劃分運行等級
19.4.4 給予正確的訊息--不要讓你的程式碼保持沉默
19.4.5 充分的應(yīng)用測試--「相容性魔鬼」總會趁你不注意時「踢你的狗」
19.4.6 靠近標準和就近原則
19.5 展望未來
19.6 總結(jié)
第20章 資訊安全
20.1 用戶的隱私資訊
20.2 禁止且受限制的操作
20.2.1 受限制的屬性
20.2.2 受限制的操作
20.2.3 腳本安全等級
20.2.4 腳本偵錯
20.3 警惕幕後的攻擊者
20.3.1 攻擊的手段
20.3.2 隱匿的資料流
20.3.3 頁面?zhèn)窝b
20.3.4 發(fā)現(xiàn)蛛絲馬跡
20.3.5 防範的手段
20.3.5.1 傳輸資料的加密
20.3.5.2 對使用者隱藏原始碼
20.4 同源策略
20.4.1 什麼是同源策略
20.4.2 同源策略的利弊
20.4.3 突破同源策略
20.5 安全區(qū)與簽章腳本
20.5.1 可設(shè)定的安全性策略方案
20.5.2 Internet Explorer的安全區(qū)
20.5.3 Netscape的簽章腳本
20.6 程式碼本身的安全性--加密與混淆
20.6.1 為什麼要加密與混淆
20.6.2 客戶端的加密技術(shù)及其範例
20.6.3 程式碼混淆原理
20.6.4 JavaScript程式碼混淆工具--一個程式碼混淆演算法的範例
20.6.5 加密與混淆的結(jié)合使用
20.7 總結(jié)
第五部分 超越JavaScript
第21章 物件導(dǎo)向
21.1 什麼物件導(dǎo)向
21.1.1 類別與物件
21.1.2 公有與私有--屬性的封裝
21.1.3 屬性與方法的型別
21.2 神奇的prototype
21.2.1 什麼是prototype
21.2.2 prototype的使用技巧
21.2.2.1 為原型物件新增屬性
21.2.2.2 有預(yù)設(shè)值的Point物件
21.2.2.3 delete操作將物件屬性恢復(fù)為預(yù)設(shè)值
21.2.2.4 使用prototype巧設(shè)getter
21.2.2.5 delete操作恢復(fù)原型屬性的可見性
21.2.2.6 使用prototype建立大量副本
21.2.2.7 使用prototype定義靜態(tài)方法
21.2.3 prototype的實質(zhì)及其範例
21.2.4 prototype的價值與限制
21.3 繼承與多型態(tài)
21.3.1 什麼是繼承
21.3.2 實作繼承的方法
21.3.2.1 建構(gòu)繼承法及其範例
21.3.2.2 原型繼承法及其範例
21.3.2.3 實例繼承法及其範例
21.3.2.4 拷貝繼承法及其範例
21.3.2.5 幾種繼承法的比較
21.3.2.6 混合繼承法及其範例
21.3.3 單繼承與多重繼承
21.3.4 介面及其實作
21.3.5 多態(tài)及其實作
21.4 建構(gòu)與析構(gòu)
21.4.1 建構(gòu)子
21.4.2 多重建構(gòu)
21.4.3 析構(gòu)
21.5 疑團! 「this」迷宮
21.5.1 無數(shù)個陷阱--令人困擾的「this」謎團
21.5.1.1 this代名詞的運用
21.5.1.2 this「陷阱」
21.5.1.3 this代名詞的非同步問題
21.5.2 偷梁換柱--不好的使用習(xí)慣
21.5.3 非同步呼叫--誰動了我的「this」
21.5.4 揭開真相--JavaScript的「this」本質(zhì)
21.5.5 困難不再--利用閉包修正「this」引用
21.6 包裝物件
21.6.1 區(qū)分值與引用
21.6.2 裝箱與拆箱
21.7 元類,類的模板
21.7.1 什麼是元類別
21.7.2 元類別--建構(gòu)類別的類別
21.7.3 為什麼要用元類別
21.7.4 類別工廠
21.7.4.1 什麼是類別工廠
21.7.4.2 為什麼要建立類別工廠
21.8 誰是造物主
21.8.1 萬物適用的準則
21.8.2 抽象的極致--一個抽像模式的例子
21.8.3 返璞歸真,同源架構(gòu)
21.9 總結(jié)
第22章 閉包與函數(shù)式程式設(shè)計
22.1 動態(tài)語言與閉包
22.1.1 動態(tài)語言
22.1.2 語法域和執(zhí)行域
22.1.3 JavaScript的閉包--一個體現(xiàn)閉包本質(zhì)的範例
22.2 閉包的特徵與形式
22.2.1 閉包的內(nèi)在--自治的領(lǐng)域
22.2.2 存取外部環(huán)境--一個用閉包改變外部環(huán)境的範例
22.2.3 閉包與物件導(dǎo)向
22.2.4 其他形式的閉包
22.3 不適合使用閉包的場合
22.4 函數(shù)式程式設(shè)計
22.4.1 什麼是函數(shù)式程式設(shè)計
22.4.1.1 函數(shù)是第一型
22.4.1.2 閉包與函數(shù)式程式設(shè)計
22.4.1.3 科里化(Currying)--一個有趣的概念
22.4.1.4 延遲求值與延續(xù)--一個Fibonacci無窮數(shù)列的例子
22.4.2 函數(shù)式程式設(shè)計、公式化與數(shù)學(xué)模型--一個拋物線方程式的範例
22.4.3 函數(shù)式程式設(shè)計的優(yōu)點
22.4.3.1 單元測試方面的優(yōu)點
22.4.3.2 調(diào)試方面的優(yōu)點
22.4.3.3 並行方面的優(yōu)點
22.4.3.4 程式碼熱部署方面的優(yōu)點
22.4.3.5 機器輔助的推理與最佳化
22.4.4 函數(shù)式程式設(shè)計的缺點
22.4.4.1 閉包的副作用
22.4.4.2 遞歸的形式
22.4.4.3 延遲求值的副作用
22.5 閉包與物件導(dǎo)向
22.5.1 私有域
22.5.2 名字空間管理
22.5.3 友元--一個非常有趣的概念
22.6 Python風(fēng)格的JavaScript程式碼
22.6.1 最簡約程式碼
22.6.2 輕量級重用
22.6.2.1 JSON
22.6.2.2 Functional
22.6.2.3 迭代函數(shù)--一個Array迭代函數(shù)的範例
22.6.3 模組管理及其範例
22.7 總結(jié)
第23章 模組級管理
23.1 模組化管理
23.1.1 模組化--程式碼的重用
23.1.2 JavaScript的模組管理
23.2 開放封閉原則與面向介面
23.2.1 開放封閉原則
23.2.2 面向介面
23.3 名字空間管理
23.3.1 什麼是名字空間
23.3.2 為什麼要用名字空間
23.3.3 JavaScript的名字空間管理
23.4 呼叫依賴
23.4.1 模組的依賴性
23.4.2 模組依賴的管理
23.5 用程式碼管理程式碼
23.5.1 運行時環(huán)境的管理
23.5.2 託管程式碼--一個簡單的託管程式碼「容器」
23.5.3 一個完整的程式碼管理容器
23.6 總結(jié)
第24章 動態(tài)建構(gòu)
24.1 讓程式碼去寫程式碼
24.1.1 腳本的動態(tài)解析
24.1.2 文法擴充--創(chuàng)造屬於自己的語言
24.2 “發(fā)明”語法
24.2.1 正規(guī)表示式和語法解析及範例
24.2.2 一個簡單的語法解析器實作
24.2.2.1 什麼是JavaScript 2.0語法
24.2.2.2 JavaScript 2.0語法的部分關(guān)鍵特性實作
24.3 實作自己的方言--LispScript
24.3.1 從JavaScript到Lisp
24.3.2 最初的工作--一般JavaScript程式碼
24.3.3 公理,表達式
24.3.4 函數(shù)式程式設(shè)計的七條基本公設(shè)
24.3.4.1 “引用”公設(shè)
24.3.4.2 “原子”公設(shè)
24.3.4.3 “等值”公設(shè)
24.3.4.4 “表頭”公設(shè)
24.3.4.5 「餘表」公設(shè)
24.3.4.6 “和表”公設(shè)
24.3.4.7 「條件」公設(shè)
24.3.5 函數(shù)文法
24.3.6 使用LispScript定義新函數(shù)
24.3.7 一個驚喜--_eval
24.3.8 其他的擴充
24.3.9 小結(jié)
24.3.10 運行環(huán)境與程式碼容器-看看「新發(fā)明」的LispScript的實際表現(xiàn)
24.4 總結(jié)
第25章 執(zhí)行效率
25.1 為什麼要討論執(zhí)行效率
25.1.1 來自客戶的抱怨--JavaScript能有多慢
25.1.2 程式碼慢下來是誰的錯
25.2 封閉的代價 ##??# 25.2.1 過度封裝的效能問題
25.2.2 資訊隱藏的利弊
25.2.3 建構(gòu)物件的開銷
25.3 盒子裡的流火
25.3.1 DOM的記憶體開銷
25.3.2 瀏覽器的記憶體管理
25.3.3 看清一個事實--記憶體洩漏的存在
25.3.4 注意--及時關(guān)閉你的「盒子」
25.3.5 一些誤會的澄清
25.3.5.1 腳本動態(tài)建立DOM導(dǎo)致記憶體洩漏
25.3.5.2 閉包導(dǎo)致記憶體洩漏
25.4 動態(tài)--魔鬼與天使
25.4.1 動態(tài)解析的效能分析--一個動態(tài)特性的效率測試
25.4.2 開發(fā)效率與執(zhí)行效率--永遠的困難選擇
25.4.3 優(yōu)美與適用--學(xué)會經(jīng)受魔鬼的誘惑
25.4.4 扮演客戶眼中的天使
25.5 讓程式碼輕舞飛揚
25.5.1 簡單就是美麗--為程式碼瘦身
25.5.2 最完美的運用是不用
25.5.3 高度抽象化是為了簡化問題
25.5.4 邏輯和表達同樣重要
25.5.5 保持程式碼的嚴謹
25.5.6 漂亮的書寫風(fēng)格--讓閱讀者心情愉快
25.6 總結(jié)
第26章 應(yīng)用框架
26.1 應(yīng)用框架概覽
26.1.1 什麼是應(yīng)用框架
26.1.2 應(yīng)用框架的組成部分
26.1.2.1 類別庫
26.1.2.2 核心模組
26.1.2.3 環(huán)境配置
26.1.2.4 使用手冊
26.2 為什麼要設(shè)計應(yīng)用框架
26.2.1 應(yīng)用框架的適用範圍
26.2.2 應(yīng)用框架的優(yōu)缺點
26.3 如何設(shè)計應(yīng)用框架
26.3.1 把握設(shè)計的目標
26.3.2 應(yīng)用框架的設(shè)計準則
26.3.3 什麼樣的應(yīng)用架構(gòu)才是成熟的應(yīng)用架構(gòu)
26.3.4 應(yīng)用框架的設(shè)計方法
26.3.5 實戰(zhàn)!設(shè)計一個簡單的應(yīng)用框架
26.3.5.1 自我描述
26.3.5.2 基礎(chǔ)介面與語意型程式碼
26.3.5.3 核心物件的原型擴充
26.3.5.4 簡單方法
26.3.5.5 名字空間
26.3.5.6 支援標準與跨瀏覽器
26.3.5.7 事件模型--Silverna的事件模型
26.3.5.8 應(yīng)用模式
26.3.5.9 提供Ajax元件
26.3.5.10 記憶體管理和其他
26.4 框架的實際應(yīng)用--在Silverna 2.0框架上開發(fā)的Widgets
26.5 已存在的應(yīng)用框架
26.5.1 Prototype
26.5.2 JQuery
26.5.3 Dojo
26.5.4 JSVM
26.5.5 其他框架
26.5.5.1 Bindows(成立於2003年)
26.5.5.2 BackBase (成立於2003年)
26.5.5.3 DOJO (開發(fā)中,成立於2004年9月)
26.5.5.4 Open Rico(開發(fā)中,成立於2005年5月,基於早期的一個proprietary框架)
26.5.5.5 qooxdoo (開發(fā)中,成立於2005年5月)
26.5.5.6 Tibet (開發(fā)中,創(chuàng)建於2005年6月)
26.5.5.7 AJFORM (創(chuàng)建於2005年6月)
26.6 總結(jié)

本網(wǎng)站聲明
本站所有資源都是由網(wǎng)友投搞發(fā)佈,或轉(zhuǎn)載各大下載站,請自行檢測軟件的完整性! 本站所有資源僅供學(xué)習(xí)與參攷,請勿用於商業(yè)用途,否則產(chǎn)生的一切後果將由您自己承擔(dān)! 如有侵權(quán)請聯(lián)繫我們刪除下架,聯(lián)繫方式: admin@php.cn

相關(guān)推薦

JavaScript 王者歸來中文版

JavaScript 王者歸來中文版
網(wǎng)頁製作
2018-01-17

手工烘焙美食網(wǎng)站模板

手工烘焙美食網(wǎng)站範本網(wǎng)站範本是提供各種手工烘焙美食宣傳網(wǎng)站範本下載。提示:本範本呼叫到Google字體庫,可能會出現(xiàn)頁面開啟比較緩慢。
前端模板
2023-10-30

現(xiàn)代人工智慧寫作服務(wù)公司網(wǎng)站模板

現(xiàn)代人工智慧寫作服務(wù)公司網(wǎng)站範本是提供人工智慧寫作服務(wù)的公司宣傳網(wǎng)站範本下載。提示:本範本呼叫到Google字體庫,可能會出現(xiàn)頁面開啟比較緩慢。
前端模板
2023-10-30

方案規(guī)劃解決服務(wù)工作室網(wǎng)站模板

方案策劃解決服務(wù)工作室網(wǎng)站範本是提供各種策劃方案服務(wù)的公司宣傳網(wǎng)站範本下載。提示:本範本呼叫到Google字體庫,可能會出現(xiàn)頁面開啟比較緩慢。
前端模板
2023-10-30

智慧商業(yè)諮詢服務(wù)公司網(wǎng)站模板

智慧商業(yè)諮詢服務(wù)公司網(wǎng)站範本是提供各種商業(yè)諮詢服務(wù)的公司宣傳網(wǎng)站範本下載。提示:本範本呼叫到Google字體庫,可能會出現(xiàn)頁面開啟比較緩慢。
前端模板
2023-10-25

IT解決方案提供者宣傳網(wǎng)站模板

IT解決方案供應(yīng)商宣傳網(wǎng)站範本是適合提供各種IT技術(shù)解決方案的公司宣傳網(wǎng)站範本下載。提示:本範本呼叫到Google字體庫,可能會出現(xiàn)頁面開啟比較緩慢。
前端模板
2023-10-25

HTML5企業(yè)區(qū)塊鏈服務(wù)網(wǎng)站模板

HTML5企業(yè)區(qū)塊鏈服務(wù)網(wǎng)站範本是為企業(yè)提供區(qū)塊鏈服務(wù)的公司宣傳網(wǎng)站範本下載。提示:本範本呼叫到Google字體庫,可能會出現(xiàn)頁面開啟比較緩慢。
前端模板
2023-10-24

印度宗教文化教育網(wǎng)站模板

印度宗教文化教育網(wǎng)站範本是適合印度宗教文化教育宣傳服務(wù)網(wǎng)站範本下載。提示:本範本呼叫到Google字體庫,可能會出現(xiàn)頁面開啟比較緩慢。
前端模板
2023-10-24

熱門推薦

TP5實戰(zhàn)_教學(xué)管理系統(tǒng)整站源碼

本套教程,以一個真實的學(xué)校教學(xué)管理系統(tǒng)為案例,手把手教會您如何在一張白紙上,從零開始,一步一步的用ThinkPHP5框架快速開發(fā)出一個商業(yè)項目,讓您快速入門TP5項目開發(fā)。
課件源碼
2017-08-11

php常用函數(shù)總結(jié)表

php常用的函數(shù),開發(fā)會經(jīng)常需要用上的函數(shù)
課件源碼
2017-08-26

PHP實戰(zhàn)天龍八部之仿愛奇藝電影網(wǎng)站課程

PHP實戰(zhàn)天龍八部之仿愛奇藝電影網(wǎng)站課程
課件源碼
2018-04-16

TP5企業(yè)站開發(fā)原始碼

本站《ThinkPHP5企業(yè)站點快速開發(fā)課程》配套
課件源碼
2017-08-21

Thinkphp6.0正式版影片教學(xué)

Thinkphp6.0正式版影片教學(xué)
課件源碼
2021-12-03

thinkphp3.2.3部落格模版

thinkphp3.2.3部落格模版
課件源碼
2017-08-14

通用後臺管理系統(tǒng)實戰(zhàn)開發(fā)(Thinkphp6+Layui)相關(guān)課件

通用後臺管理系統(tǒng)實戰(zhàn)開發(fā)(Thinkphp6+Layui)相關(guān)課件
課件源碼
2021-09-27

ThinkPHP5商城計畫實戰(zhàn)影片教學(xué)課程源碼

ThinkPHP5商城計畫實戰(zhàn)影片教學(xué)課程源碼
課件源碼
2017-08-28

第49~58天教學(xué)源碼

第49~58天教學(xué)源碼
vip課件源碼
2018-02-03

直播課_Blog專案原始碼

直播課_Blog專案原始碼
課件源碼
2017-09-18