出版時(shí)間:2010-7 出版社:人民郵電出版社 作者:Nicholas Zakas 頁(yè)數(shù):600 譯者:李松峰,曹力
Tag標(biāo)簽:無
前言
從誕生至今的大部分時(shí)間里,恐懼、咒罵、蔑視和誤解一直與JavaScript如影隨形。JavaScript剛剛問世那幾年,很多“嚴(yán)肅的程序員”都認(rèn)為它不夠嚴(yán)肅。相比之下,COM泡沫時(shí)期加入Web開發(fā)行列的許多文科生,則普遍覺得JavaScript深不可測(cè)、晦澀難懂。就算那些耐力和韌性俱佳者能夠把JavaScript琢磨得很透,但仍然擺脫不掉競(jìng)爭(zhēng)中的各種瀏覽器提供的不同實(shí)現(xiàn)給他們帶來的麻煩。凡此種種,最終導(dǎo)致粗制濫造的腳本越來越多。另一方面,拜Web前端代碼的無比開放性所賜,各種壞習(xí)慣不斷從一個(gè)站點(diǎn)被粘貼進(jìn)另一個(gè)站點(diǎn)的源代碼中。那些實(shí)現(xiàn)活該臭名昭著,可是,JavaScript這門語(yǔ)言也因此被嚴(yán)重拖累,背上了不該有的壞名聲。2001年前后(隨著Interact Explorer 6的發(fā)布),瀏覽器實(shí)現(xiàn)已經(jīng)大為改進(jìn),Web開發(fā)實(shí)踐也開始得到改善,呈現(xiàn)出了二者水乳交融的局面。
內(nèi)容概要
本書在上一版基礎(chǔ)上進(jìn)行了大幅度更新和修訂,融入了近幾年來JavaScript應(yīng)用發(fā)展的最新成果,幾乎涵蓋了所有需要理解的重要概念和最新的JavaScript應(yīng)用成果。從頗具深度的JavaScript語(yǔ)言基礎(chǔ)到作用域(鏈),從引用類型到面向?qū)ο缶幊?,從極其靈活的匿名函數(shù)到閉包的內(nèi)部機(jī)制,從瀏覽器對(duì)象模型(BOM)、文檔對(duì)象模型(DOM)到基于事件的Web腳本設(shè)計(jì),從XML(E4X)到Ajax及JSON,從高級(jí)前端開發(fā)技術(shù)到前沿的客戶端存儲(chǔ),從最佳編程實(shí)踐到即將成為現(xiàn)實(shí)的API,直至JavaScript未來的發(fā)展,全景式地展示了JavaScript高級(jí)程序設(shè)計(jì)的方方面面。
本書適合不同層次的JavaScript/Web開發(fā)人員閱讀參考,也可作為高校相關(guān)專業(yè)課程的教材。
作者簡(jiǎn)介
作者:(美國(guó))尼古拉斯·澤卡斯(Nicholas C.Zakas) 譯者:李松峰 曹力尼古拉斯·澤卡斯(Nicholas C.Zakas),世界頂級(jí)Web技術(shù)專家,現(xiàn)為Yahoo!公司首席前端工程師尼古拉斯擁有豐富的Web開發(fā)和界面設(shè)計(jì)經(jīng)驗(yàn).曾經(jīng)參與許多世界級(jí)大公司的Web解決萬案開發(fā)。
書籍目錄
第1章 JavaScript簡(jiǎn)介
1.1 JavaScript簡(jiǎn)史
1.2 JavaScript實(shí)現(xiàn)
1.2.1 ECMAScript
1.2.2 文檔對(duì)象模型(DOM)
1.2.3 瀏覽器對(duì)象模型(BOM)
1.3 JavaScript版本
1.4 小結(jié)
第2章 在HTML中使用JavaScript
2.1 script元素
2.1.1 標(biāo)簽的位置
2.1.2 延遲腳本
2.1.3 在XHTML中的用法
2.1.4 不推薦使用的語(yǔ)法
2.1.5 嵌入代碼與外部文件
2.2 文檔模式
2.3 noscript元素
2.4 小結(jié)
第3章 基本概念
3.1 語(yǔ)法
3.1.1 區(qū)分大小寫
3.1.2 標(biāo)識(shí)符
3.1.3 注釋
3.1.4 語(yǔ)句
3.2 關(guān)鍵字和保留字
3.3 變量
3.4 數(shù)據(jù)類型
3.4.1 typeof操作符
3.4.2 Undefined類型
3.4.3 Null類型
3.4.4 Boolean類型
3.4.5 Number類型
3.4.6 String類型
3.4.7 Object類型
3.5 操作符
3.5.1 一元操作符
3.5.2 位操作符
3.5.3 布爾操作符
3.5.4 乘性操作符
3.5.5 加性操作符
3.5.6 關(guān)系操作符
3.5.7 相等操作符
3.5.8 條件操作符
3.5.9 賦值操作符
3.5.10 逗號(hào)操作符
3.6 語(yǔ)句
3.6.1 if語(yǔ)句
3.6.2 do-while語(yǔ)句
3.6.3 while語(yǔ)句
3.6.4 for語(yǔ)句
3.6.5 for-in語(yǔ)句
3.6.6 label語(yǔ)句
3.6.7 break和continue語(yǔ)句
3.6.8 with語(yǔ)句
3.6.9 switch語(yǔ)句
3.7 函數(shù)
3.7.1 理解參數(shù)
3.7.2 沒有重載
3.8 小結(jié)
第4章 變量、作用域和內(nèi)存問題
4.1 基本類型和引用類型的值
4.1.1 動(dòng)態(tài)屬性
4.1.2 復(fù)制變量值
4.1.3 傳遞參數(shù)
4.1.4 檢測(cè)類型
4.2 執(zhí)行環(huán)境及作用域
4.2.1 延長(zhǎng)作用域鏈
4.2.2 沒有塊級(jí)作用域
4.3 垃圾收集
4.3.1 標(biāo)記清除
4.3.2 引用計(jì)數(shù)
4.3.3 性能問題
4.3.4 管理內(nèi)存
4.4 小結(jié)
第5章 引用類型
5.1 Object類型
5.2 Array類型
5.2.1 轉(zhuǎn)換方法
5.2.2 棧方法
5.2.3 隊(duì)列方法
5.2.4 重排序方法
5.2.5 操作方法
5.3 Date類型
5.3.1 繼承的方法
5.3.2 日期格式化方法
5.3.3 日期/時(shí)間組件方法
5.4 RegExp類型
5.4.1 RegExp實(shí)例屬性
5.4.2 RegExp實(shí)例方法
5.4.3 RegExp構(gòu)造函數(shù)屬性
5.4.4 模式的局限性
5.5 Function類型
5.5.1 沒有重載(深入理解)
5.5.2 函數(shù)聲明與函數(shù)表達(dá)式
5.5.3 作為值的函數(shù)
5.5.4 函數(shù)內(nèi)部屬性
5.5.5 函數(shù)屬性和方法
5.6 基本包裝類型
5.6.1 Boolean類型
5.6.2 Number類型
5.6.3 String類型
5.7 內(nèi)置對(duì)象
5.7.1 Global對(duì)象
5.7.2 Math對(duì)象
5.8 小結(jié)
第6章 面向?qū)ο蟮某绦蛟O(shè)計(jì)
6.1 創(chuàng)建對(duì)象
6.1.1 工廠模式
6.1.2 構(gòu)造函數(shù)模式
6.1.3 原型模式
6.1.4 組合使用構(gòu)造函數(shù)模式和原型模式
6.1.5 動(dòng)態(tài)原型模式
6.1.6 寄生構(gòu)造函數(shù)模式
6.1.7 穩(wěn)妥構(gòu)造函數(shù)模式
6.2 繼承
6.2.1 原型鏈
6.2.2 借用構(gòu)造函數(shù)
6.2.3 組合繼承
6.2.4 原型式繼承
6.2.5 寄生式繼承
6.2.6 寄生組合式繼承
6.3 小結(jié)
第7章 匿名函數(shù)
7.1 遞歸
7.2 閉包
7.2.1 閉包與變量
7.2.2 關(guān)于this對(duì)象
7.2.3 內(nèi)存泄漏
7.3 模仿塊級(jí)作用域
7.4 私有變量
7.4.1 靜態(tài)私有變量
7.4.2 模塊模式
7.4.3 增強(qiáng)的模塊模式
7.5 小結(jié)
第8章 BOM
8.1 window對(duì)象
8.1.1 全局作用域
8.1.2 窗口關(guān)系及框架
8.1.3 窗口位置
8.1.4 窗口大小
8.1.5 導(dǎo)航和打開窗口
8.1.6 間歇調(diào)用和超時(shí)調(diào)用
8.1.7 系統(tǒng)對(duì)話框
8.2 location對(duì)象
8.2.1 查詢字符串參數(shù)
8.2.2 位置操作
8.3 navigator對(duì)象
8.3.1 檢測(cè)插件
8.3.2 注冊(cè)處理程序
8.4 screen對(duì)象
8.5 history對(duì)象
8.6 小結(jié)
第9章 客戶端檢測(cè)
9.1 能力檢測(cè)
9.2 怪癖檢測(cè)
9.3 用戶代理檢測(cè)
9.3.1 用戶代理字符串的歷史
9.3.2 用戶代理字符串檢測(cè)技術(shù)
9.3.3 完整的代碼
9.3.4 使用方法
9.4 小結(jié)
第10章 DOM
10.1 節(jié)點(diǎn)層次
10.1.1 Node類型
10.1.2 Document類型
10.1.3 Element類型
10.1.4 Text類型
10.1.5 Comment類型
10.1.6 CDATASection類型
10.1.7 DocumentType類型
10.1.8 DocumentFragment類型
10.1.9 Attr類型
10.2 DOM擴(kuò)展
10.2.1 呈現(xiàn)模式
10.2.2 滾動(dòng)
10.2.3 children屬性
10.2.4 contains()方法
10.2.5 操作內(nèi)容
10.3 DOM操作技術(shù)
10.3.1 動(dòng)態(tài)腳本
10.3.2 動(dòng)態(tài)樣式
10.3.3 操作表格
10.3.4 使用NodeList
10.4 小結(jié)
第11章 DOM2和DOM3
11.1 DOM變化
11.1.1 針對(duì)XML命名空間的變化
11.1.2 其他方面的變化
11.2 樣式
11.2.1 訪問元素的樣式
11.2.2 操作樣式表
11.2.3 元素大小
11.3 遍歷
11.3.1 NodeIterator
11.3.2 TreeWalker
11.4 范圍
11.4.1 DOM中的范圍
11.4.2 IE中的范圍
11.5 小結(jié)
第12章 事件
12.1 事件流
12.1.1 事件冒泡
12.1.2 事件捕獲
12.1.3 DOM事件流
12.2 事件處理程序(或事件偵聽器)
12.2.1 HTML事件處理程序
12.2.2 DOM0級(jí)事件處理程序
12.2.3 DOM2級(jí)事件處理程序
12.2.4 IE事件處理程序
12.2.5 跨瀏覽器的事件處理程序
12.3 事件對(duì)象
12.3.1 DOM中的事件對(duì)象
12.3.2 IE中的事件對(duì)象
12.3.3 跨瀏覽器的事件對(duì)象
12.4 事件類型
12.4.1 UI事件
12.4.2 鼠標(biāo)事件
12.4.3 鍵盤事件
12.4.4 HTML事件
12.4.5 變動(dòng)事件
12.4.6 專有事件
12.4.7 移動(dòng)Safari支持的事件
12.5 內(nèi)存和性能
12.5.1 事件委托
12.5.2 移除事件處理程序
12.6 模擬事件
12.6.1 DOM中的事件模擬
12.6.2 IE中的事件模擬
12.7 小結(jié)
第13章 表單腳本
13.1 表單
13.1.1 提交表單
13.1.2 重置表單
13.1.3 表單字段
13.2 文本框腳本
13.2.1 選擇文本
13.2.2 過濾輸入
13.2.3 自動(dòng)切換焦點(diǎn)
13.3 選擇框腳本
13.3.1 選擇選項(xiàng)
13.3.2 添加選項(xiàng)
13.3.3 移除選項(xiàng)
13.3.4 移動(dòng)和重排選項(xiàng)
13.4 表單序列化
13.5 富文本編輯
13.5.1 操作富文本
13.5.2 富文本選區(qū)
13.5.3 表單與富文本
13.6 小結(jié)
第14章 錯(cuò)誤處理與調(diào)試
14.1 瀏覽器錯(cuò)誤報(bào)告
14.1.1 Internet Explorer
14.1.2 Firefox
14.1.3 Safari
14.1.4 Opera
14.1.5 Chrome
14.2 錯(cuò)誤處理
14.2.1 try-catch語(yǔ)句
14.2.2 拋出錯(cuò)誤
14.2.3 錯(cuò)誤(error)事件
14.3 錯(cuò)誤處理策略
14.3.1 常見的錯(cuò)誤類型
14.3.2 區(qū)分致命錯(cuò)誤和非致命錯(cuò)誤
14.3.3 把錯(cuò)誤記錄到服務(wù)器
14.4 調(diào)試技術(shù)
14.4.1 將消息記錄到控制臺(tái)
14.4.2 將消息記錄到當(dāng)前頁(yè)面
14.4.3 拋出錯(cuò)誤
14.5 常用的IE錯(cuò)誤
14.5.1 操作終止
14.5.2 無效字符
14.5.3 未找到成員
14.5.4 未知運(yùn)行時(shí)錯(cuò)誤
14.5.5 語(yǔ)法錯(cuò)誤
14.5.6 系統(tǒng)無法找到指定資源
14.6 調(diào)試工具
14.6.1 IE中的調(diào)試器
14.6.2 Firebug
14.6.3 Drosera
14.6.4 Opera中的JavaScript調(diào)試器
14.6.5 其他調(diào)試工具
14.7 小結(jié)
第15章 JavaScript與XML
15.1 瀏覽器對(duì)XML DOM的支持
15.1.1 DOM2級(jí)核心
15.1.2 DOMParser類型
15.1.3 XMLSerializer類型
15.1.4 DOM3級(jí)加載和保存
15.1.5 IE對(duì)XML的支持
15.1.6 跨瀏覽器處理XML
15.2 瀏覽器對(duì)XPath的支持
15.2.1 DOM3級(jí)XPath
15.2.2 IE中的XPath
15.2.3 跨瀏覽器使用XPath
15.3 瀏覽器對(duì)XSLT的支持
15.3.1 IE中的XSLT
15.3.2 XSLTProcessor類型
15.3.3 跨瀏覽器使用XSLT
15.4 小結(jié)
第16章 E4X
16.1 E4X的類型
16.1.1 XML類型
16.1.2 XMLList類型
16.1.3 命名空間類型
16.1.4 QName類型
16.2 一般用法
16.2.1 訪問特性
16.2.2 其他節(jié)點(diǎn)類型
16.2.3 查詢
16.2.4 構(gòu)建和操作XML
16.2.5 解析和序列化
16.2.6 命名空間
16.3 其他變化
16.4 全面啟用E4X
16.5 小結(jié)
第17章 Ajax與JSON
17.1 XHR對(duì)象
17.1.1 XHR的用法
17.1.2 HTTP頭部信息
17.1.3 GET請(qǐng)求
17.1.4 POST請(qǐng)求
17.1.5 瀏覽器差異
17.1.6 安全
17.2 跨域請(qǐng)求
17.2.1 XDomainRequest對(duì)象
17.2.2 跨域XHR
17.3 JSON
17.3.1 在Ajax中使用JSON
17.3.2 安全
17.4 小結(jié)
第18章 高級(jí)技巧
18.1 高級(jí)函數(shù)
18.1.1 作用域安全的構(gòu)造函數(shù)
18.1.2 惰性載入函數(shù)
18.1.3 函數(shù)綁定
18.1.4 函數(shù)柯里化
18.2 高級(jí)定時(shí)器
18.2.1 重復(fù)的定時(shí)器
18.2.2 Yielding Processes
18.2.3 函數(shù)節(jié)流
18.3 自定義事件
18.4 拖放
18.4.1 修繕拖動(dòng)功能
18.4.2 添加自定義事件
18.5 小結(jié)
第19章 客戶端存儲(chǔ)
19.1 cookie
19.1.1 限制
19.1.2 cookie的成分
19.1.3 JavaScript中的cookie
19.1.4 子cookie
19.1.5 關(guān)于cookie的思考
19.2 IE用戶數(shù)據(jù)
19.3 DOM存儲(chǔ)機(jī)制
19.3.1 存儲(chǔ)類型
19.3.2 sessionStorage對(duì)象
19.3.3 globalStorage對(duì)象
19.3.4 localStorage對(duì)象
19.3.5 StorageItem類型
19.3.6 storage事件
19.3.7 限制
19.4 總結(jié)
第20章 最佳實(shí)踐
20.1 可維護(hù)性
20.1.1 什么是可維護(hù)的代碼
20.1.2 代碼約定
20.2 松散耦合
20.3 性能
20.3.1 注意作用域
20.3.2 選擇正確方法
20.3.3 最小化語(yǔ)句數(shù)
20.3.4 優(yōu)化DOM交互
20.4 部署
20.4.1 構(gòu)建過程
20.4.2 驗(yàn)證
20.4.3 壓縮
20.5 小結(jié)
第21章 未來的API
21.1 選擇器API
21.1.1 querySelector()方法
21.1.2 querySelectorAll()方法
21.1.3 現(xiàn)今和未來的支持情況
21.2 HTML5
21.2.1 字符集屬性
21.2.2 類相關(guān)的增加
21.2.3 自定義數(shù)據(jù)特性
21.2.4 跨文檔消息傳遞
21.2.5 媒體元素
21.2.6 canvas元素
21.2.7 離線支持
21.2.8 歷史的改變
21.2.9 數(shù)據(jù)庫(kù)存儲(chǔ)
21.2.10 拖放操作
21.2.11 WebSocket類型
21.2.12 HTML5的未來
21.3 小結(jié)
第22章 JavaScript的未來
22.1 ECMAScript4/JavaScript2
22.1.1 JavaScript1.5
22.1.2 JavaScript1.6
22.1.3 JavaScript1.7
22.1.4 JavaScript1.8
22.1.5 JavaScript1.9
22.1.6 ECMAScript4提案
22.1.7 變量類型
22.1.8 函數(shù)
22.1.9 類型定義
22.1.10 類和接口
22.1.11 接口
22.1.12 繼承
22.1.13 命名空間
22.1.14 包
22.1.15 語(yǔ)言上的其他變更
22.1.16 ECMAScript4的未來
22.2 ECMAScript3.1
22.2.1 對(duì)對(duì)象內(nèi)部實(shí)現(xiàn)的變更
22.2.2 靜態(tài)對(duì)象方法
22.2.3 本地的JSON支持
22.2.4 Decimal
22.2.5 用法子集
22.2.6 ECMAScript3.1的未來
22.3 小結(jié)
附錄A JavaScript庫(kù)
附錄B JavaScript工具
章節(jié)摘錄
插圖:ECMAScript變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值?;绢愋椭抵傅氖悄切┍4嬖跅?nèi)存中的簡(jiǎn)單數(shù)據(jù)段,即這種值完全保存在內(nèi)存中的一個(gè)位置,而引用類型值則是指那些保存在堆內(nèi)存中的對(duì)象,意思是變量中保存的實(shí)際上只是一個(gè)指針,這個(gè)指針指向內(nèi)存中的另一個(gè)位置,該位置保存對(duì)象。在將一個(gè)值賦給變量時(shí),解析器必須確定這個(gè)值是基本類型值,還是引用類型值。第3章討論了5種基本數(shù)據(jù)類型:Undefined、Null、Boolean、Number和String,這5種基本數(shù)據(jù)類型的值在內(nèi)存中分別占有固定大小的空間,因此可以把它們的值保存在棧內(nèi)存中,而且,這樣也可以提高查詢變量的速度。對(duì)于保存基本類型值的變量,我們說它們是按值訪問的,因?yàn)槲覀儾僮鞯氖撬鼈儗?shí)際保存的值。在某些語(yǔ)言中,字符串以對(duì)象的形式來表示,因此被認(rèn)為是引用類型的,ECMAScript放棄丁這一傳統(tǒng)。如果賦給變量的是一個(gè)引用類型的值,則必須在堆內(nèi)存中為這個(gè)值分配空間。由于這種值的大小不固定,因此不能把它們保存到棧內(nèi)存中。但內(nèi)存地址的大小是固定的,因此可以將內(nèi)存地址保存在棧內(nèi)存中。這樣,當(dāng)查詢引用類型的變量時(shí),就可以首先從棧中讀取內(nèi)存地址,然后再“順藤摸瓜’地找到保存在堆中的值,對(duì)于這種查詢變量值的方式,我們把它叫做按引用訪問,因?yàn)槲覀儾僮鞯牟皇菍?shí)際的值,而是被那個(gè)值所引用的對(duì)象。圖4.1形象地說明了如何在內(nèi)存中保存這兩種不同數(shù)據(jù)類型的值。圖4.1中展示了一些保存在棧內(nèi)存中的基本類型值。保存在棧內(nèi)存中的每個(gè)值,分別占據(jù)著固定大小的空間,可以按照順序來訪問它們。如果棧內(nèi)存中保存的是一塊內(nèi)存的地址,則這個(gè)值就像是一個(gè)指向?qū)ο笤诙褍?nèi)存中位置的指針。保存在堆內(nèi)存中的數(shù)據(jù)不是按照順序訪問的,因?yàn)槊總€(gè)對(duì)象所需要的內(nèi)存空間并不相等。
媒體關(guān)注與評(píng)論
“如果你像我一樣,想學(xué)習(xí)或者熟練掌握今天最熱門的Web開發(fā)技術(shù),本書是一個(gè)絕佳的起點(diǎn),適合在所有Ajax圖書之前閱讀?!薄 狫.Ambrose Little Microsoft MVP“本書作者顯然非常了解讀者的需要,落筆切中要害,行文信息密集.單單對(duì)客戶端通信、Web服務(wù)、正則表達(dá)式、DOM、XML處理等現(xiàn)代JavaScrpt技術(shù)的詳細(xì)講解,就已經(jīng)物超所值。” ——JavaScriptkit.com
編輯推薦
《JavaScript高級(jí)程序設(shè)計(jì)(第2版)》:JavaScript經(jīng)典教程Amazon超級(jí)暢銷書前端開發(fā)人員必備JavaScrpt的應(yīng)用在廣度和深度上日益擴(kuò)大和加深,前端開發(fā)亟待掌握的JavaScrpt技能也越來越具有挑戰(zhàn)性。這個(gè)新版本幾乎全部更新、重寫了上一版的內(nèi)容,融入了作者近幾年來奮戰(zhàn)在前端開發(fā)一線的寶貴經(jīng)驗(yàn),是學(xué)習(xí)和提高JavaScrpt技能的必讀經(jīng)典?!禞avaScript高級(jí)程序設(shè)計(jì)(第2版)》不僅全面深入地講述了,JavaScript的基本概念,闌釋了它特有的面向?qū)ο蠛屠^承的機(jī)制.還詳盡討論了JavaScrpt實(shí)現(xiàn)的各個(gè)組成部分。在以大量篇幅全景式剖析ECMAScript和DOM的過程中,各個(gè)級(jí)別的DOM規(guī)范在作者筆下紛至沓來,諸如事件模擬、XML解析、XPath查詢等高級(jí)主題也講得分外清楚。此外,錯(cuò)誤處理與調(diào)試、Ajax與JSON,乃至客戶端存儲(chǔ)、未來的API等章節(jié)也都條理清晰、異彩紛呈?!禞avaScript高級(jí)程序設(shè)計(jì)(第2版)》適合有一定編程經(jīng)驗(yàn)的前端開發(fā)人員閱讀,也可作為高校相關(guān)專業(yè)課程的教材。一幅濃墨重彩的語(yǔ)言畫卷,一部推陳出新的技術(shù)名著
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載
JavaScript高級(jí)程序設(shè)計(jì):第2版 PDF格式下載