TOP
0
0
【簡體曬書區】 單本79折,5本7折,活動好評延長至5/31,趕緊把握這一波!
JavaScript 王者歸來(簡體書)
滿額折

JavaScript 王者歸來(簡體書)

人民幣定價:86.000000 元
定  價:NT$ 516 元
優惠價:87449
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:13 點
相關商品
商品簡介
作者簡介
目次

商品簡介

你手中的這本《JavaScript王者歸來》不僅是一本傳播知識的書,更是一本求道的書。 本書分為五個部分循序漸進地與讀者討論了JavaScript的方方面面,從簡單的語言基礎到豐富的實際應用再到深入剖析語言本質的高級話題,字里行間包含著作者多年工作中對JavaScript實踐乃至程序設計思想的深入思考和總結。 本書揭開了JavaScript的面紗,繞過誤解和虛幻的表象,引領你探索程序王國的奧妙。它既是一本為初學者準備的入門級教程,又是一本探尋程序設計思想本源的“魔法典籍”,也是一本Web開發工程師們需要的案頭參考書。 本書是你進入腳本王國的一把鑰匙,引導你領略腳本魔法的神奇魅力。它還是一本著眼于未來改變互聯網的啟蒙讀物,在它的引領下,你將在互聯網的世界里獲得你所希望得到的知識、智慧、成就和快樂。

作者簡介

吳亮,(網名月影),早年曾在微軟亞洲研究院做過訪問學生、在金蝶軟件有限公司先后擔任過核心開發工程師、設計師和項目經理,現任百度電子商務事業部Web開發項目經理。多年來致力于JavaScript技術和Web標準的推廣,活躍于國內極有影響力的JavaScript專業網站——無憂腳本(www.51js.com),并任JavaScript版的版主。平時熱愛文學、寫作和圍棋。

目次

第一部分 概論
 第1章 從零開始
1.1 為什么選擇JavaScript?
1.1.1 用戶的偏好--B/S模式
1.1.2 在什么情況下用JavaScript
1.1.3 對JavaScript的一些誤解
1.1.3.1 JavaScript和Java的關系
1.1.3.2 披著C外衣的Lisp
1.1.3.3 關于JavaScript的思維定勢
1.1.3.4 JavaScript是為業余愛好者設計的?
1.1.3.5 JavaScript是面向對象的嗎
1.1.3.6 其他誤解
1.1.4 警惕!腳本誘惑
1.1.5 隱藏在簡單表象下的復雜度
1.1.6 令人迷惑的選擇--錦上添花還是雪中送炭
1.1.7 回到問題上來
1.2 JavaScript的應用范圍
1.2.1 客戶端的JavaScript
1.2.2 服務器端的JavaScript
1.2.3 其他環境中的JavaScript
1.3 JavaScript的版本
1.3.1 瀏覽器中的JavaScript版本
1.3.2 其他版本
1.4 一些值得留意的特性
1.4.1 小把戲--神奇的魔法代碼
1.4.2 為客戶端服務--經典Hello World!的另一種JavaScript實現
1.4.3 數據交互--JavaScript的一項強大功能
1.4.4 JavaScript表面上的禁忌及如何突破這些禁忌
1.5 安全性和執行效率
1.5.1 數據安全--永遠的敏感話題
1.5.2 實戰!攻擊與防范
1.5.3 不容馬虎--時刻關注性能
1.6 一個例子--JavaScript編寫的計算器
1.6.1 從需求分析開始--什么是計算器?
1.6.2 系統設計--如何實現計算器?
1.6.3 系統實現--計算器的最終實現
1.6.4 持續改進--迭代的軟件開發過程
1.7 學習和使用JavaScript的幾點建議
1.7.1 像程序員一樣地思考--程序員的四個境界
1.7.2 吝惜你的代碼
1.7.3 學會在環境中調試
1.7.4 警惕那些小缺陷
1.7.5 思考先于實踐--不要輕易動手寫代碼
1.7.6 時刻回頭--圣賢也無法完全預知未來
1.8 關于本書的其余部分
 第2章 瀏覽器中的JavaScript
2.1 嵌入網頁的可執行內容
2.1.1 在什么地方裝載JavaScript代碼
2.1.2 關于代碼的Script標簽
2.1.3 我的代碼什么時候被執行--不同執行期的JavaScript代碼
2.1.4 拿來主義--引入外部的JavaScript文件
2.2 賞心悅目的特效
2.2.1 生命在于運動--DHTML的效果
2.2.2 換一種風格--CSS的力量
2.2.3 用JavaScript操作DOM--一個可拖動窗口的例子
2.3 使用JavaScript來與用戶交互
2.3.1 創建一個彈出式幫助和進度條
2.3.2 填錯了哦
2.4 繞開腳本陷阱
2.4.1 現實并不總是完美的
2.4.2 不能完全相信你所見到的
2.5 總結
 第3章 開發環境和調試方法
3.1 我能用什么來編寫腳本--適合編寫JavaScript的文本編輯器
3.2 來自瀏覽器的支持
3.2.1 主流瀏覽器
3.2.2 非主流瀏覽器
3.3 集成開發環境
3.3.1 什么是集成開發環境
3.3.2 我需要集成開發環境嗎
3.3.3 適合JavaScript的集成開發環境
3.4 調試工具--提升開發效率的利器
3.4.1 什么是調試
3.4.2 原始的調試方法--利用輸出語句、“反射”機制和調試對象來進行調試
3.4.3 適合JavaScript的調試工具
3.5 定位代碼和調用堆棧
3.5.1 Step by Step--單步和斷點
3.5.2 監視內存
3.5.3 追蹤問題的源頭--查看調用堆棧
3.5.4 遇到麻煩了--為什么我跟蹤不到代碼
3.6 瀏覽器捕獲異常
3.6.1 異常處理機制--一個try/catch/finally模式的例子
3.6.2 異常的種類
3.6.3 應該在什么時候“吃掉”異常
3.7 總結
第二部分 JavaScript核心
 第4章 語言結構
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 常量和變量
4.2.1 常量和變量
4.2.2 變量的標識符
4.2.3 變量的類型
4.2.4 變量的聲明
4.2.5 變量的作用域
4.3 表達式和運算符
4.3.1 表達式
4.3.2 運算符概述
4.3.3 算術運算符
4.3.4 關系運算符
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 函數調用運算符
4.4 控制語句
4.4.1 表達式語句
4.4.2 語句塊
4.4.3 條件語句
4.4.4 循環語句
4.4.5 跳轉語句
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 總結
 第5章 數據類型
5.1 基本數據類型
5.1.1 數值
5.1.2 字符串--一個字符串相關操作的例子
5.1.3 布爾型
5.2 數組和對象
5.2.1 數組
5.2.2 對象--一個構造函數的例子
5.3 函數類型--一個函數和閉包的例子
5.4 神奇的null和undefined
5.4.1 null
5.4.2 undefined--獨一無二的類型
5.5 正則表達式
5.5.1 正則表達式常量
5.5.2 正則表達式對象
5.6 值類型和引用類型
5.6.1 什么是值和值的引用
5.6.2 使用值和使用引用
5.6.3 值與引用的相互轉換:裝箱和拆箱
5.7 類型識別與類型轉換
5.7.1 運行時類型識別--兩個運行的類型識別的例子
5.7.2 類型的自動轉換及其例子
5.7.3 強制類型轉換及其例子
5.7.4 高級用法--一個自定義類型轉換的例子
5.8 警惕數值陷阱
5.8.1 困惑--浮點數的精度問題
5.8.2 誤差的修正及其例子
5.9 總結
 第6章 函數
6.1 函數定義和函數調用
6.1.1 函數的定義
6.1.1.1 聲明式函數定義與函數表達式及其例子
6.1.1.2 JavaScript函數的奧妙——魔法代碼
6.1.2 函數的調用
6.2 函數的參數
6.2.1 形參與實參
6.2.2 Arguments對象
6.2.2.1 一個使用Arguments對象檢測形參的例子
6.2.2.2 一個使用Arguments對象接收任意個數參數的例子
6.2.2.3 一個使用Arguments對象模擬函數重載的例子
6.2.3 參數類型匹配--一個利用arguments實現函數重載機制的例子
6.3 函數的調用者和所有者
6.3.1 函數的調用者
6.3.2 函數的所有者--一個為函數指定所有者的例子
6.3.3 動態調用--外來的所有者
6.4 函數常量和閉包
6.4.1 匿名的函數
6.4.2 函數引用
6.4.3 函數參數和函數返回值及其例子
6.4.4 高級用法--閉包作為局部域與延遲求值
6.5 高級抽象--Function類型和函數模版
6.5.1 動態創建函數--一個利用Function實現Lambda算子的例子
6.5.2 模式--函數工廠及其實例
6.6 總結
 第7章 對象
7.1 什么是對象
7.2 對象的屬性和方法
7.2.1 對象的內置屬性
7.2.2 為對象添加和刪除屬性
7.2.3 反射機制--枚舉對象屬性
7.3 對象的構造
7.3.1 構造函數--一個雙精度浮點數封裝類的例子
7.3.2 缺省構造和拷貝構造
7.3.3 對象常量
7.4 對象的銷毀和存儲單元的回收
7.5 JavaScript的內置對象
7.5.1 Math對象
7.5.2 Date對象--創建一個簡單的日歷
7.5.3 Error對象
7.5.4 其他內置對象
7.5.5 特殊的對象--全局對象與調用對象
7.6 總結
 第8章 集合
8.1 數組和數組元素
8.1.1 數組的構造
8.1.2 數組常量
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 哈希表的構造
8.3.3 實現一個簡單的HashTable類型
8.4 高級用法--集合操作和閉包
8.5 總結
 第9章 字符串
9.1 字符串的構造
9.1.1 字符串常量
9.1.2 轉義序列
9.1.3 字符串構造函數
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 系統設計--棋譜和棋盤數據的字符串描述
9.4.3 系統實現--解析和處理棋譜
9.4.4 完整的棋譜閱讀器
9.5 總結
 第10章 正則表達式
10.1 什么是正則表達式
10.1.1 正則表達式的概念
10.1.2 JavaScript中的正則表達式
10.2 正則表達式的規則
10.2.1 直接量字符
10.2.2 字符類和布爾操作
10.2.3 重復
10.2.4 選擇、分組和引用
10.2.5 指定匹配的位置
10.2.6 標志——高級模式匹配的規則
10.3 模式匹配
10.3.1 用于模式匹配的String方法及其例子
10.3.2 用于模式匹配的RegExp方法
10.3.2.1 一個使用exec()方法從身份證號碼獲取生日的例子
10.3.2.2 一個使用test()方法遍歷字符串的例子
10.4 關于正則表達式包裝對象
10.4.1 RegExp對象——利用正則表達式實現全文檢索
10.4.2 RegExp的實例屬性
10.5 強大的正則表達式
10.5.1 分析正則表達式的局部
10.5.2 一個例子--強大的在線編輯器
10.5.3 構造新的文法--一個在JSVM中實現JSVM2解析器的例子
10.6 高級用法
10.7 用正則表達式處理文本
10.7.1 創建一個計價公式編輯器
10.7.1.1 需求分析--什么是計價公式編輯器
10.7.1.2 系統實現--計價公式編輯器的實現
10.7.2 創建一個同步滾動歌詞播放器
10.7.2.1 需求分析--什么是同步滾動歌詞播放器
10.7.2.2 系統設計與實現--處理LRC歌詞
10.8 總結
第三部分 瀏覽器與DOM
 第11章 瀏覽器對象
11.1 Window對象--最基本的瀏覽器對象
11.1.1 Window對象概覽
11.1.2 Window對象的生命周期
11.1.3 Window對象的屬性和方法
11.1.4 一個多窗口應用的例子
11.2 Document對象--瀏覽器窗口文檔內容的代表
11.2.1 Document對象概覽
11.2.2 動態生成的文檔
11.2.3 Document對象的基本信息
11.2.4 Document對象的外觀屬性
11.2.5 Document子對象接口
11.2.5.1 一個遍歷Anchors對象的例子
11.2.5.2 一個顛倒圖片的例子
11.3 對話框和狀態欄
11.3.1 創建一個簡單對話框
11.3.2 其他類型的對話框
11.3.2.1 模擬對話框--創建一個窗口對話框及一個對話框阻塞進行的例子
11.3.2.2 showModalDialog和showModelessDialog--非W3C或ECMAScrip標準
11.3.3 狀態欄
11.4 框架--上層的Window對象
11.4.1 多框架應用
11.4.2 框架之間的關系
11.4.3 框架的命名
11.4.4 子框架中的JavaScript
11.4.5 框架的應用--多頁簽顯示
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 其他內置對象
11.6.1 Navigator對象--瀏覽器總體信息的代表
11.6.2 Screen對象--提供顯示器分辨率和可用顏色數量信息
11.6.3 Location對象--當前窗口中顯示文檔的URL的代表
11.6.4 History對象--一個有趣的對象
11.7 總結
 第12章 文檔對象模型
12.1 什么是DOM
12.1.1 把文檔表示為樹
12.1.2 樹的節點
12.1.3 DOM對象的通用屬性和方法
12.1.4 HTML結構和DOM對象的關系--用JavaScript通過DOM來操作HTML文檔
12.2 DOM與瀏覽器實現
12.2.1 關于DOM HTML API
12.2.2 DOM的級別和特性
12.2.3 DOM的一致性
12.2.4 差異性--瀏覽器的DOM方言
12.3 一組“盒子”--DOM元素
12.3.1 嵌套的“盒子”
12.3.2 “盒子”和“盒子”內容的分類
12.4 創建和刪除節點
12.4.1 構造全新的節點
12.4.2 平面展開--通過文檔元素直接創建
12.4.3 回收空間--刪除不用的節點
12.5 訪問和操縱DOM節點
12.5.1 打開每一個盒子--遍歷節點
12.5.2 弄清層級關系--父子與兄弟
12.5.3 如何搜索特定節點
12.5.4 克隆節點--一個使用cloneNode()復制表格的例子
12.5.5 移動節點及其范例
12.5.6 關于添加新行和排序的小技巧
12.6 讀寫數據--添加、修改和刪除屬性
12.7 外觀與行為
12.7.1 DOM樣式屬性
12.7.2 控制DOM元素的顯示與隱藏
12.7.3 改變顏色和大小--一個簡單有趣的例子
12.7.4 改變位置--創建一個繞圓圈旋轉的文字
12.7.5 編輯控制及其范例
12.7.6 改變樣式及其范例
12.7.7 改變行為
12.8 XML DOM
12.8.1 什么是XML DOM
12.8.2 如何使用XML DOM--一個利用XML實現多級關聯下拉選擇框的例子
12.9 總結
 第13章 事件處理
13.1 什么是事件
13.1.1 消息與事件響應
13.1.2 瀏覽器的事件驅動機制
13.2 基本事件處理
13.2.1 事件和事件類型
13.2.2 事件的綁定
13.2.3 直接調用事件處理函數
13.2.4 事件處理函數的返回值
13.2.5 帶參數的事件響應及其例子
13.2.6 “this”關鍵字
13.3 標準事件模型
13.3.1 起泡和捕捉--瀏覽器的事件傳播
13.3.2 事件處理函數的注冊
13.3.3 把對象注冊為事件處理程序
13.3.4 事件模塊和事件類型
13.3.5 關于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 關于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 事件代理和事件注冊--一個實現標準事件接口的例子
13.5.4 標準模式--事件分派和接收
13.6 一個例子--增強數據表格
13.6.1 什么是增強數據表格
13.6.2 一個采用兩重table嵌套方式固定表頭的例子
13.6.3 可變列寬的實現
13.6.4 標記行--呈現有別于其他行的背景色
13.6.5 小技巧--將代碼添加到樣式表
13.7 總結
 第14章 級聯樣式表
14.1 什么是級聯樣式表
14.1.1 CSS樣式和樣式表
14.1.2 CSS的標準化
14.1.3 瀏覽器支持的CSS
14.2 JavaScript與CSS
14.2.1 CSS和DOM的關系
14.2.2 CSS和IE的關系
14.2.3 瀏覽器的CSS兼容性
14.3 控制CSS改變頁面風格
14.3.1 實現結構與表現的分離及其范例
14.3.2 使用JwaScript和CSS實現頁面多種風格的實時替換
14.4 總結
 第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 總結
第四部分 數據交互
 第16章 同步和異步
16.1 什么是同步和異步
16.2 超時設定和時間間隔
16.3 定時器使用--偵聽與攔截
16.3.1 標準模式--監視器及其范例
16.3.2 使用定時器時應當注意的問題
16.4 一個例子--漂亮的Web時鐘
16.4.1 什么是Web時鐘?
16.4.2 最簡單的Web時鐘
16.4.3 Web時鐘的設計
16.4.4 完整的Web時鐘源代碼
16.5 總結
 第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的跨瀏覽器應用
17.3 XML DOM的錯誤處理
17.3.1 處理錯誤信息的ParseError對象
17.3.2 包含錯誤信息的文檔
17.4 XML DOM操作XML文檔
17.4.1 訪問節點
17.4.2 創建新節點
17.4.3 移動和修改節點及其范例
17.4.4 讀寫節點屬性和讀寫數據
17.4.5 保存文檔
17.5 一個例子--JavaScript棋譜閱讀器(二)
17.5.1 用XML描述棋譜
17.5.2 將XML棋譜轉換為SGF棋譜
17.6 什么是XML HTTP對象
17.6.1 XML HTTP對象簡介
17.6.2 瀏覽器支持的XML HTTP對象
17.7 通過XML HTTP發送請求
17.7.1 建立連接
17.7.2 發送請求
17.8 讀取和設定HTTP頭
17.8.1 什么是HTTP頭
17.8.2 讀取和設定HTTP頭
17.9 服務器應答
17.9.1 同步和異步應答及其例子
17.9.2 包含應答文本內容的ResponseText 和ResponseXML
17.10 總結
 第18章 Ajax簡介
18.1 什么是Ajax
18.1.1 Ajax并不神秘
18.1.2 Ajax的應用場景
18.1.3 Ajax的競爭對手--其他替代技術
18.2 Ajax初探--我的第一個Ajax程序
18.2.1 從常規應用開始--一個簡單的實時聊天室
18.2.2 討厭的頁面刷新
18.2.3 無刷新解決方案--改進的聊天室
18.2.4 異步工作--遲滯感的解決方案
18.3 Ajax原理剖析
18.3.1 XML HTTP實時通信及一個簡單封裝了AjaxProxy對象的例子
18.3.2 數據動態顯示--Ajax改善交互體驗的重要特點
18.3.3 發揮XML的能力
18.3.4 用JavaScript綁定一切
18.3.5 應用背后的標準
18.4 Ajax范例--實時聊天工具
18.4.1 什么是實時聊天工具
18.4.2 需求分析--實時聊天功能的實現要點
18.4.3 系統實現--實時聊天功能的實現
18.4.4 小結
18.5 總結
 第19章 標準和兼容性
19.1 標準化組織
19.1.1 W3C和DOM標準
19.1.2 ECMA和JavaScript標準
19.1.3 互聯網標準
19.2 平臺和瀏覽器的兼容性
19.2.1 最小公分母法
19.2.2 防御性編碼
19.2.3 客戶端探測器
19.2.4 特性檢測
19.2.5 實現標準
19.2.6 適度停止運行
19.3 語言版本的兼容性
19.3.1 language屬性
19.3.2 版本測試
19.4 如何實現跨瀏覽器應用
19.4.1 取舍--劃定支持范圍
19.4.2 基礎模塊設計--獨立兼容性檢測
19.4.3 劃分運行級別
19.4.4 給出正確的信息--不要讓你的代碼保持沉默
19.4.5 充分的應用測試--“兼容性魔鬼”總會趁你不注意時“踢你的狗”
19.4.6 靠近標準和就近原則
19.5 展望未來
19.6 總結
 第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 頁面偽裝
20.3.4 發現蛛絲馬跡
20.3.5 防范的手段
20.3.5.1 傳輸數據的加密
20.3.5.2 對用戶隱藏源代碼
20.4 同源策略
20.4.1 什么是同源策略
20.4.2 同源策略的利弊
20.4.3 突破同源策略
20.5 安全區和簽名腳本
20.5.1 可配置的安全策略方案
20.5.2 Internet Explorer的安全區
20.5.3 Netscape的簽名腳本
20.6 代碼本身的安全--加密和混淆
20.6.1 為什么要加密和混淆
20.6.2 客戶端的加密技術及其例子
20.6.3 代碼混淆原理
20.6.4 JavaScript代碼混淆工具--一個代碼混淆算法的例子
20.6.5 加密和混淆的結合使用
20.7 總結
第五部分 超越JavaScript
 第21章 面向對象
21.1 什么面向對象
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 帶默認值的Point對象
21.2.2.3 delete操作將對象屬性恢復為默認值
21.2.2.4 使用prototype巧設getter
21.2.2.5 delete操作恢復原型屬性的可見性
21.2.2.6 使用prototype創建大量副本
21.2.2.7 使用prototype定義靜態方法
21.2.3 prototype的實質及其范例
21.2.4 prototype的價值與局限性
21.3 繼承與多態
21.3.1 什么是繼承
21.3.2 實現繼承的方法
21.3.2.1 構造繼承法及其例子
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 多態及其實現
21.4 構造與析構
21.4.1 構造函數
21.4.2 多重構造
21.4.3 析構
21.5 疑團!“this”迷宮
21.5.1 無數個陷阱--令人困擾的“this”謎團
21.5.1.1 this代詞的運用
21.5.1.2 this“陷阱”
21.5.1.3 this代詞的異步問題
21.5.2 偷梁換柱--不好的使用習慣
21.5.3 異步調用--誰動了我的“this”
21.5.4 揭開真相--JavaScript的“this”本質
21.5.5 困難不再--利用閉包修正“this”引用
21.6 包裝對象
21.6.1 區分值和引用
21.6.2 裝箱與拆箱
21.7 元類,類的模板
21.7.1 什么是元類
21.7.2 元類--構造類的類
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 返璞歸真,同源架構
21.9 總結
 第22章 閉包與函數式編程
22.1 動態語言與閉包
22.1.1 動態語言
22.1.2 語法域和執行域
22.1.3 JavaScript的閉包--一個體現閉包本質的例子
22.2 閉包的特點與形式
22.2.1 閉包的內在--自治的領域
22.2.2 訪問外部環境--一個用閉包改變外部環境的例子
22.2.3 閉包和面向對象
22.2.4 其他形式的閉包
22.3 不適合使用閉包的場合
22.4 函數式編程
22.4.1 什么是函數式編程
22.4.1.1 函數是第一型
22.4.1.2 閉包與函數式編程
22.4.1.3 科里化(Currying)--一個有趣的概念
22.4.1.4 延遲求值和延續--一個Fibonacci無窮數列的例子
22.4.2 函數式編程、公式化與數學模型--一個拋物線方程的例子
22.4.3 函數式編程的優點
22.4.3.1 單元測試方面的優點
22.4.3.2 調試方面的優點
22.4.3.3 并行方面的優點
22.4.3.4 代碼熱部署方面的優點
22.4.3.5 機器輔助的推理和優化
22.4.4 函數式編程的缺點
22.4.4.1 閉包的副作用
22.4.4.2 遞歸的形式
22.4.4.3 延遲求值的副作用
22.5 閉包與面向對象
22.5.1 私有域
22.5.2 名字空間管理
22.5.3 友元--一個非常有趣的概念
22.6 Python風格的JavaScript代碼
22.6.1 最簡約代碼
22.6.2 輕量級重用
22.6.2.1 JSON
22.6.2.2 Functional
22.6.2.3 迭代函數--一個Array迭代函數的例子
22.6.3 模塊管理及其范例
22.7 總結
 第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 運行時環境的管理
23.5.2 托管代碼--一個簡單的托管代碼“容器”
23.5.3 一個完整的代碼管理容器
23.6 總結
 第24章 動態構建
24.1 讓代碼去寫代碼
24.1.1 腳本的動態解析
24.1.2 語法擴展--創造屬于自己的語言
24.2 “發明”語法
24.2.1 正則表達式和語法解析及例子
24.2.2 一個簡單的語法解析器實現
24.2.2.1 什么是JavaScript 2.0語法
24.2.2.2 JavaScript 2.0語法的部分關鍵特性實現
24.3 實現自己的方言--LispScript
24.3.1 從JavaScript到Lisp
24.3.2 最初的工作--一般JavaScript代碼
24.3.3 公理,表達式
24.3.4 函數式編程的七條基本公設
24.3.4.1 “引用”公設
24.3.4.2 “原子”公設
24.3.4.3 “等值”公設
24.3.4.4 “表頭”公設
24.3.4.5 “余表”公設
24.3.4.6 “和表”公設
24.3.4.7 “條件”公設
24.3.5 函數文法
24.3.6 使用LispScript定義新函數
24.3.7 一個驚喜--_eval
24.3.8 其他的擴展
24.3.9 小結
24.3.10 運行環境和代碼容器——看看“新發明”的LispScript的實際表現
24.4 總結
 第25章 執行效率
25.1 為什么要討論執行效率
25.1.1 來自客戶的抱怨--JavaScript能有多慢
25.1.2 代碼慢下來是誰的錯
25.2 封閉的代價
25.2.1 過度封裝的性能問題
25.2.2 信息隱藏的利弊
25.2.3 構造對象的開銷
25.3 盒子里的流火
25.3.1 DOM的內存開銷
25.3.2 瀏覽器的內存管理
25.3.3 看清一個事實--內存泄漏的存在
25.3.4 注意--及時關閉你的“盒子”
25.3.5 一些誤會的澄清
25.3.5.1 腳本動態創建DOM導致內存泄漏
25.3.5.2 閉包導致內存泄漏
25.4 動態--魔鬼與天使
25.4.1 動態解析的性能分析--一個動態特性的效率測試
25.4.2 開發效率與執行效率--永遠的困難選擇
25.4.3 優美與適用--學會經受魔鬼的誘惑
25.4.4 扮演客戶眼中的天使
25.5 讓代碼輕舞飛揚
25.5.1 簡單就是美--為代碼瘦身
25.5.2 最完美的運用是不用
25.5.3 高度抽象是為了簡化問題
25.5.4 邏輯和表達同樣重要
25.5.5 保持代碼的嚴謹
25.5.6 漂亮的書寫風格--讓閱讀者心情愉快
25.6 總結
 第26章 應用框架
26.1 應用框架概覽
26.1.1 什么是應用框架
26.1.2 應用框架的組成部分
26.1.2.1 類庫
26.1.2.2 核心模塊
26.1.2.3 環境配置
26.1.2.4 使用手冊
26.2 為什么要設計應用框架
26.2.1 應用框架的適用范圍
26.2.2 應用框架的利弊
26.3 如何設計應用框架
26.3.1 把握設計的目標
26.3.2 應用框架的設計準則
26.3.3 什么樣的應用框架才是成熟的應用框架
26.3.4 應用框架的設計方法
26.3.5 實戰!設計一個簡單的應用框架
26.3.5.1 自描述
26.3.5.2 基礎接口和語義型代碼
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 應用模式
26.3.5.9 提供Ajax組件
26.3.5.10 內存管理和其他
26.4 框架的實際應用--在Silverna 2.0框架上開發的Widgets
26.5 已存在的應用框架
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 (開發中,成立于2004年9月)
26.5.5.4 Open Rico(開發中,成立于2005年5月,基于早期的一個proprietary框架)
26.5.5.5 qooxdoo (開發中,成立于2005年5月)
26.5.5.6 Tibet (開發中,創建于2005年6月)
26.5.5.7 AJFORM (創建于2005年6月)
26.6 總結

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 449
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區