基本介紹
內容簡介
《JavaScript面向對象編程指南》編輯推薦:JavaScript是一種具有高度表達能力的、基於原型特性的、非常靈活的面向對象程式語言。《JavaScript面向對象編程指南》中值得一提的是,《JavaScript面向對象編程指南》作者是JavaScript設計模式方面的專家,他在第8章中介紹了幾種常用的JavaScript編程模式,這也為他後續的另一本重要著作《JavaScript Patterns》奠定了基礎。
《JavaScript面向對象編程指南》全面地覆蓋了JavaScript語言的OO特性,同時兼顧基礎知識,對初學者來說,是難得的JavaScript佳作。閱讀《JavaScript面向對象編程指南》不需要讀者具備任何的JavaScript基礎知識及項目經驗,通過學習《JavaScript面向對象編程指南》,讀者將會在面試有關JavaScript程式設計的職位時遊刃有餘。
作者簡介
《JavaScript面向對象編程指南》作者:(加拿大)Stoyan Stefanov 是雅虎公司的Web開發人員和Zend認證的工程師。他是雅虎性能開發工具“YSlow”項目的領導人,並參與了“PEAR”庫等其他開源項目。他也是《JavaScript Patterns》一書的作者。
圖書目錄
第1章 引言1
1.1 回顧歷史1
1.2 變革之風3
1.3 分析現狀3
1.4 展望未來4
1.5 面向對象程式設計5
1.5.1 對象5
1.5.2 類6
1.5.3 封裝6
1.5.4 聚合7
1.5.5 繼承7
1.5.6 多態8
1.6 OOP概述8
1.7 訓練環境設定9
1.8 使用Firebug控制台10
1.9 本章小結11
第2章 基本數據類型、數組、循環及條件表達式13
2.1 變數13
2.2 操作符15
2.3 基本數據類型18
2.3.1 查看類型操作符——typeof19
2.3.2 數字19
2.3.3 字元串23
2.3.4 布爾值26
2.3.5 Undefined與null32
2.4 基本數據類型綜述34
2.5 數組35
2.5.1 增加、更新數組元素36
2.5.2 刪除元素36
2.5.3 數組的數組37
2.6 條件與循環38
2.6.1 代碼塊38
2.6.2 循環44
2.7 注釋49
2.8 本章小結49
2.9 練習題50
第3章 函式52
3.1 什麼是函式53
3.1.1 調用函式53
3.1.2 參數53
3.2 預定義函式55
3.2.1 parseInt()56
3.2.2 parseFloat()57
3.2.3 isNaN()58
3.2.4 isFinite()58
3.2.5 URI的編碼與反編碼59
3.2.6 eval()59
3.2.7 一點驚喜—alert()函式60
3.3 變數的作用域60
3.4 函式也是數據62
3.4.1 匿名函式63
3.4.2 回調函式64
3.4.3 回調示例65
3.4.4 自調函式66
3.4.5 內部(私有)函式67
3.4.6 返回函式的函式68
3.4.7 能重寫自己的函式68
3.5 閉包70
3.5.1 作用域鏈70
3.5.2 詞法作用域71
3.5.3 利用閉包突破作用域鏈72
3.5.4 Getter與Setter78
3.5.5 疊代器79
3.6 本章小結80
3.7 練習題80
第4章 對象82
4.1 從數組到對象82
4.1.1 元素、屬性、方法84
4.1.2 哈希表、關聯型數組85
4.1.3 訪問對象的屬性85
4.1.4 調用對象的方法86
4.1.5 修改屬性與方法87
4.1.6 使用this值88
4.1.7 構造器函式88
4.1.8 全局對象90
4.1.9 構造器屬性91
4.1.10 instanceof操作符92
4.1.11 返回對象的函式92
4.1.12 傳遞對象93
4.1.13 對象比較94
4.1.14 Firebug控制台中的對象95
4.2 內建對象96
4.2.1 Object97
4.2.2 Array98
4.2.3 Function102
4.2.4 Boolean107
4.2.5 Number109
4.2.6 String110
4.2.7 Math115
4.2.8 Date117
4.2.9 RegExp121
4.2.10 Error對象127
4.3 本章小結131
4.4 練習題132
第5章 原型135
5.1 原型屬性135
5.1.1 利用原型添加方法與屬性136
5.1.2 使用原型的方法與屬性137
5.1.3 自身屬性與原型屬性138
5.1.4 利用自身屬性重寫原型屬性139
5.1.5 isPrototypeOf()方法143
5.1.6 神秘的_proto_連結143
5.2 擴展內建對象145
5.2.1 關於擴展內建對象的討論146
5.2.2 一些原型陷阱147
5.3 本章小結150
5.4 練習題150
第6章 繼承152
6.1 原型鏈152
6.1.1 原型鏈示例153
6.1.2 將共享屬性遷移到原型中去156
6.2 只繼承於原型158
6.3 uber—子對象訪問父對象的方式161
6.4 將繼承部分封裝成函式163
6.5 屬性拷貝163
6.6 小心處理引用拷貝165
6.7 對象之間的繼承167
6.8 深拷貝169
6.9 object()171
6.10 原型繼承與屬性拷貝的混合套用172
6.11 多重繼承173
6.12 寄生式繼承175
6.13 構造器借用176
6.14 本章小結179
6.15 案例學習:圖形繪製183
6.15.1 分析183
6.15.2 實現184
6.15.3 測試188
6.16 練習題189
第7章 瀏覽器環境190
7.1 在HTML頁面中引入JavaScript代碼190
7.2 概述:BOM與DOM191
7.3 BOM192
7.3.1 window對象再探192
7.3.2 window.navigator193
7.3.3 Firebug的備忘功能193
7.3.4 window.location194
7.3.5 window.history195
7.3.6 window.frames196
7.3.7 window.screen197
7.3.8 window.open()/close()198
7.3.9 window.moveTo()、window.resizeTo()199
7.3.10 window.alert()、window.prompt()、window.confirm()199
7.3.11 window.setTimeout()、window.setInterval()201
7.3.12 window.document202
7.4 DOM202
7.4.1 CoreDOM與HTMLDOM204
7.4.2 DOM節點的訪問206
7.4.3 DOM節點的修改215
7.4.4 新建節點218
7.4.5 移除節點221
7.4.6 只適用於HTML的DOM對象223
7.5 事件227
7.5.1 內聯HTML屬性法227
7.5.2 元素屬性法227
7.5.3 DOM的事件監聽器228
7.5.4 捕捉法與冒泡法229
7.5.5 阻斷傳播231
7.5.6 防止默認行為233
7.5.7 跨瀏覽器事件監聽器233
7.5.8 事件類型235
7.6 XMLHttpRequest對象236
7.6.1 傳送請求236
7.6.2 處理回響237
7.6.3 在早於7的IE版本中創建XMLHttpRequest對象238
7.6.4 A代表異步239
7.6.5 X代表XML240
7.6.6 實例示範240
7.7 本章小結242
7.8 練習題244
第8章 編程模式與設計模式247
8.1 編程模式248
8.1.1 行為隔離248
8.1.2 命名空間250
8.1.3 初始化分支253
8.1.4 延遲定義254
8.1.5 配置對象255
8.1.6 私有屬性和方法257
8.1.7 特權函式258
8.1.8 私有函式的公有化258
8.1.9 自執行函式259
8.1.10 鏈式調用260
8.1.11 JSON261
8.2 設計模式262
8.2.1 單件模式1263
8.2.2 單件模式2263
8.2.3 工廠模式264
8.2.4 裝飾器模式266
8.2.5 觀察者模式269
8.3 本章小結272
附錄A 保留字273
附錄B 內建函式276
附錄C 內建對象279
附錄D 正則表達式305