
0人評分過此書
精通JavaScript
內容簡介:導入現代程式設計原則
精通網頁程式語言
當今幾乎每個網頁應用程式的核心裡都有JavaScript的身影,從Twitter這類的社群應用程式到Phaser、Babylon等在瀏覽器環境下設計的遊戲框架。在一般人眼裡,JavaScript是程式初學者較容易上手的入門語言,但其本質其實相當靈活而且複雜,可用於開發所有規模大小的應用程式。
《Eloquent JavaScript 第三版》終於在千呼萬喚下登場了,經過徹底修訂的內容將帶讀者深入JavaScript語言,示範如何寫出漂亮同時又有效率的程式碼。本次更新納入全新功能,例如:類別表示法、箭頭函式、迭代器、非同步函式、字串範本及區塊作用範圍。
作者Haverbeke藉由程式範例進行沉浸式教學,讓讀者從第一章開始就進入程式碼的世界。同時,利用章節末的練習題和完整章節的實作專案,提供讀者自己撰寫程式的機會,累積動手的經驗。本書帶領讀者從JavaScript語言的基礎結構、控制結構、函式及資料結構學起,幫助讀者先撰寫出基本的程式;接著學習處理程式發生的錯誤、修復程式臭蟲、模組化以及非同步程式設計,再推進到網頁瀏覽器的範疇,學習如何使用JavaScript設計瀏覽器相關程式。讀者跟著書中的幾個實作專案,例如,設計瀏覽器遊戲、簡單的程式語言和繪圖程式,還能從中學到:
‧了解程式設計的基本要素,包括程式語法、控制和資料
‧藉由物件導向和函式語言程式設計兩大技巧來組織與釐清程式碼
‧撰寫瀏覽器腳本及開發基礎的網頁應用程式
‧發揮文件物件模型(DOM)的效用,與瀏覽器進行互動
‧利用Node.js環境建置伺服器與開發工具函式
看到這裡,你是不是覺得自己已經精通這項網頁程式語言了呢?
本書提供的線上封閉測試環境中有書中所有的原始程式碼。讀者可在這個測試環境中編輯、執行程式碼,並且立即看到程式碼的輸出結果。
精通網頁程式語言
當今幾乎每個網頁應用程式的核心裡都有JavaScript的身影,從Twitter這類的社群應用程式到Phaser、Babylon等在瀏覽器環境下設計的遊戲框架。在一般人眼裡,JavaScript是程式初學者較容易上手的入門語言,但其本質其實相當靈活而且複雜,可用於開發所有規模大小的應用程式。
《Eloquent JavaScript 第三版》終於在千呼萬喚下登場了,經過徹底修訂的內容將帶讀者深入JavaScript語言,示範如何寫出漂亮同時又有效率的程式碼。本次更新納入全新功能,例如:類別表示法、箭頭函式、迭代器、非同步函式、字串範本及區塊作用範圍。
作者Haverbeke藉由程式範例進行沉浸式教學,讓讀者從第一章開始就進入程式碼的世界。同時,利用章節末的練習題和完整章節的實作專案,提供讀者自己撰寫程式的機會,累積動手的經驗。本書帶領讀者從JavaScript語言的基礎結構、控制結構、函式及資料結構學起,幫助讀者先撰寫出基本的程式;接著學習處理程式發生的錯誤、修復程式臭蟲、模組化以及非同步程式設計,再推進到網頁瀏覽器的範疇,學習如何使用JavaScript設計瀏覽器相關程式。讀者跟著書中的幾個實作專案,例如,設計瀏覽器遊戲、簡單的程式語言和繪圖程式,還能從中學到:
‧了解程式設計的基本要素,包括程式語法、控制和資料
‧藉由物件導向和函式語言程式設計兩大技巧來組織與釐清程式碼
‧撰寫瀏覽器腳本及開發基礎的網頁應用程式
‧發揮文件物件模型(DOM)的效用,與瀏覽器進行互動
‧利用Node.js環境建置伺服器與開發工具函式
看到這裡,你是不是覺得自己已經精通這項網頁程式語言了呢?
本書提供的線上封閉測試環境中有書中所有的原始程式碼。讀者可在這個測試環境中編輯、執行程式碼,並且立即看到程式碼的輸出結果。
-
前言
-
程式設計的基本原則
-
程式語言的重要性
-
JavaScript的歷史與發展
-
程式碼的學習與使用方法
-
本書內容簡介
-
本書編排慣例
-
-
PART I:程式語言
-
1 資料值、資料型態與運算子
-
資料值
-
數字
-
算術
-
特殊數字
-
字串
-
一元運算子
-
布林值
-
比較大小
-
邏輯運算子
-
空值
-
自動轉換型態
-
短路邏輯運算子
-
本章重點回顧
-
-
2 程式結構
-
表達式與陳述式
-
綁定
-
變數命名
-
執行環境
-
函式
-
console.log函式
-
回傳值
-
控制流結構
-
條件控制結構
-
while & do迴圈結構
-
程式碼縮排
-
for迴圈
-
跳出迴圈
-
簡化變數的更新方法
-
使用switch結構指派變數值
-
大小寫混用的命名風格
-
註解
-
本章重點回顧
-
練習題
-
迴圈三角形(Looping a Triangle)
-
經典題型FizzBuzz
-
西洋棋棋盤(Chessboard)
-
-
3 函式
-
函式的定義
-
變數的作用範圍
-
巢狀範圍
-
函式值
-
函式宣告法
-
箭頭函式
-
呼叫堆疊
-
選擇性參數
-
閉包
-
遞迴
-
函式發展
-
函式與副作用
-
本章重點回顧
-
練習題
-
最小值(Minimum)
-
遞迴(Recursion)
-
計算字元數(Bean Counting)
-
-
4 資料結構:物件與陣列
-
松鼠人
-
資料集
-
屬性
-
方法
-
物件
-
可變異性
-
松鼠人觀察日誌
-
計算相關係數
-
陣列迴圈
-
分析結果
-
常用的陣列技巧
-
字串及其相關屬性
-
其餘參數
-
Math物件
-
陣列解構
-
JSON表示法
-
本章重點回顧
-
練習題
-
範圍內的數字總和(The Sum of a Range)
-
反轉陣列(Reversing an Array)
-
資料結構—List(A List)
-
深入比較(Deep Comparison)
-
-
5 高階函式
-
抽象
-
抽象通用性
-
高階函式
-
字元集
-
過濾陣列
-
陣列轉換—map 方法
-
加總陣列值—reduce方法
-
組合性
-
字串與字元編碼
-
辨識文字
-
本章重點回顧
-
練習題
-
陣列扁平化(Flattening)
-
自訂Loop函式(Your Own Loop)
-
實作every函式(Everything)
-
主要書寫方向(Dominant Writing Direction)
-
-
6 物件的秘密
-
封裝
-
方法
-
原型
-
類別
-
類別表示法
-
覆蓋原型屬性
-
Map物件
-
多型
-
資料型態Symbol
-
迭代器介面
-
getter、setter和靜態方法
-
繼承
-
instanceof運算子
-
本章重點回顧
-
練習題
-
Vector型態(A Vector Type)
-
群組(Groups)
-
迭代群組(Iterable Groups)
-
借用其他物件的方法(Borrowing a Method)
-
-
7 實作專案:宅配機器人
-
綠野村
-
宅配任務
-
持久化資料
-
模擬機器人的行為
-
郵務車路線
-
路徑搜尋
-
練習題
-
衡量機器人的能力(Measuring a Robot)
-
改善機器人效率(Robot Efficiency)
-
持久化群組(Persistent Group)
-
-
8 臭蟲與錯誤
-
程式語言
-
嚴格模式
-
資料型態
-
自動測試
-
偵錯
-
異常管理
-
例外情況
-
例外處理
-
選擇性攔截例外情況
-
斷言
-
本章重點回顧
-
練習題
-
再接再厲(Retry)
-
上鎖的箱子(The Locked Box)
-
-
9 規則運算式
-
建立規則運算式
-
配對測試
-
字元集
-
重複比對部分模式
-
運算式分組
-
分組比對
-
日期類別
-
單詞邊界
-
模式選項
-
比對機制
-
回溯
-
replace方法
-
貪婪模式
-
動態建立RegExp物件
-
search方法
-
lastIndex屬性
-
應用迴圈比對
-
剖析INI檔案
-
國際字元
-
本章重點回顧
-
練習題
-
Regexp 高爾夫(Regexp Golf)
-
更換引號風格(Quoting Style)
-
比對數字(Numbers Again)
-
-
10 模組
-
建立模組區塊
-
套件
-
權宜之計下的模組
-
將資料轉換為程式碼
-
模組規範CommonJS
-
模組規範ECMAScript
-
模組的建立與封裝
-
模組設計
-
本章重點回顧
-
練習題
-
模組化機器人(A Modular Robot)
-
道路模組(Roads Module)
-
循環相依性(Circular Dependencies)
-
-
11 非同步程式設計
-
非同步性
-
烏鴉世界的技術
-
回呼函式
-
Promise類別
-
異常
-
建立網路的難度很高
-
promise物件的集合
-
網路洪泛
-
訊息選路
-
async函式
-
生成器函式
-
事件迴圈
-
非同步錯誤
-
本章重點回顧
-
練習題
-
手術刀追跡程式(Tracking the Scalpel)
-
建立Building Promise.all 函式(Building Promise.all)
-
-
12 實作專案:自創一個小型的程式語言
-
剖析
-
求值器
-
特殊語法格式
-
程式開發環境
-
函式
-
編譯程式
-
秘技
-
練習題
-
陣列(Arrays)
-
閉包(Closure)
-
註解(Comments)
-
修正作用範圍
-
-
-
PART II:瀏覽器
-
13 Javascript與瀏覽器
-
電腦網路與網際網路
-
網頁
-
HTML
-
HTML與JavaScript
-
沙盒環境
-
相容性與瀏覽器爭霸戰
-
-
14 文件物件模型
-
文件結構
-
樹狀結構
-
介面標準
-
樹狀結構內的移動
-
尋找樹狀結構內的元素
-
修改文件
-
建立節點
-
屬性
-
版面配置
-
風格
-
CSS寫作風格
-
Query選擇器
-
定位與動畫
-
本章重點回顧
-
練習題
-
建立表格(Build a Table)
-
從標籤查詢名稱(Elements by Tag Name)
-
貓與帽子(The Cat’s Hat)
-
-
15 事件處理
-
事件處理器
-
事件與DOM節點
-
事件物件
-
事件傳播
-
預設動作
-
鍵盤事件
-
游標事件
-
點擊滑鼠
-
移動滑鼠
-
觸控事件
-
捲動事件
-
焦點事件
-
載入事件
-
事件與事件迴圈
-
計時器
-
降低事件觸發頻率
-
本章重點回顧
-
練習題
-
氣球(Balloon)
-
滑鼠的拖曳軌跡(Mouse Trail)
-
分頁式介面(Tabs)
-
-
16 實作專案:2D平面遊戲
-
遊戲設計
-
應用技術
-
製作遊戲關卡
-
讀取遊戲關卡
-
角色物件
-
封裝帶來的負擔
-
繪製遊戲畫面
-
動作與碰撞
-
更新角色物件
-
追蹤鍵盤事件
-
執行遊戲
-
練習題
-
遊戲結束(Game Over)
-
暫停遊戲(Pausing the Game)
-
怪物(A Monster)
-
-
17 繪圖:Canvas元素
-
SVG向量圖
-
Canvas元素
-
繪製直線與平面
-
繪製路徑
-
繪製曲線
-
繪製圓餅圖
-
繪製文字
-
繪製圖片
-
變形
-
儲存與清除變形效果
-
回頭改造遊戲
-
選擇繪圖介面
-
本章重點回顧
-
練習題
-
形狀(Shapes)
-
圓餅圖(The Pie Chart)
-
彈跳球(A Bouncing Ball)
-
預先計算鏡像圖(Precomputed Mirroring)
-
-
18 HTTP與表單
-
通訊協定
-
瀏覽器與HTTP
-
Fetch介面
-
HTTP運行的沙盒環境
-
HTTP的優勢
-
HTTP的安全性
-
表單欄位
-
焦點事件
-
欄位失效
-
將表單與其元素視為一體
-
文字欄位
-
核取方塊與單選按鈕
-
選項欄位
-
檔案欄位
-
將資料儲存在客戶端
-
本章重點回顧
-
練習題
-
內容協商(Content Negotiation)
-
編寫JavaScript程式的工作環境(A JavaScript Workbench)
-
康威生命遊戲(Conway’s Game of Life)
-
-
19 實作專案:小畫家線上版
-
編輯器介面元件
-
應用程式狀態
-
建立DOM結構
-
畫布
-
應用程式
-
繪圖工具
-
儲存與載入圖檔
-
復原歷史紀錄
-
開始動手畫吧
-
為何瀏覽器技術如此之難?
-
練習題
-
快捷鍵(Keyboard Bindings)
-
繪圖效率(Efficient Drawing)
-
繪製圓形(Circles)
-
繪製直線(Proper Lines)
-
-
-
PART III:NODE開發環境
-
20 伺服器端開發環境:NODE.JS入門
-
發展背景
-
node命令
-
node模組
-
安裝NPM
-
NPM套件檔案
-
NPM版本
-
檔案系統模組
-
HTTP模組
-
Stream介面
-
檔案伺服器
-
本章重點回顧
-
練習題
-
搜尋工具(Search Tool)
-
建立目錄(Directory Creation)
-
在網站上提供公用空間(A Public Space on the Web)
-
-
21 實作專案:技能交流網站
-
設計網站
-
長時輪詢
-
HTTP介面
-
伺服器端
-
路由機制
-
提供檔案服務
-
演講資源
-
支援長時輪詢
-
客戶端
-
HTML
-
動作
-
渲染元件
-
輪詢
-
應用程式
-
練習題
-
在硬碟裡留存資料(Disk Persistence)
-
重置評論欄位(Comment Field Resets)
-
-
22 提升JavaScript效能的技巧
-
分段式編譯
-
圖形配置
-
定義圖形
-
力導向配置圖
-
避免冗事
-
剖析
-
內聯函式
-
減少產出垃圾
-
垃圾回收機制
-
動態型態
-
本章重點回顧
-
練習題
-
路徑搜尋(Pathfinding)
-
計時(Timing)
-
最佳化(Optimizing)
-
-
-
解題提示
-
第2章:程式結構
-
迴圈三角形(Looping a Triangle)
-
經典題型FizzBuzz
-
西洋棋棋盤(Chessboard)
-
-
第3章:函式
-
最小值(Minimum)
-
遞迴(Recursion)
-
計算字元數(Bean Counting)
-
-
第4章:資料結構:物件與陣列
-
範圍內的數字總和(The Sum of a Range)
-
反轉陣列(Reversing an Array)
-
資料結構—List(A List)
-
深入比較(Deep Comparison)
-
-
第5章:高階函式
-
實作every 函式(Everything)
-
主要書寫方向(Dominant Writing Direction)
-
-
第6章:物件的秘密
-
Vector型態(A Vector Type)
-
群組(Groups)
-
迭代群組(Iterable Groups)
-
借用其他物件的方法(Borrowing a Method)
-
-
第7章:實作專案:宅配機器人
-
衡量機器人的能力(Measuring a Robot)
-
改善機器人效率(Robot Efficiency)
-
持久化群組(Persistent Group)
-
-
第8章:臭蟲與錯誤
-
再接再厲(Retry)
-
上鎖的箱子(The Locked Box)
-
-
第9章:規則運算式
-
更換引號風格(Quoting Style)
-
比對數字(Numbers Again)
-
-
第10章:模組
-
模組化機器人(A Modular Robot)
-
道路模組(Roads Module)
-
循環相依性(Circular Dependencies)
-
-
第11章:非同步程式設計
-
手術刀追跡程式(Tracking the Scalpel)
-
建立Promise.all 函式(Building Promise.all)
-
-
第12章:實作專案:自創一個小型的程式語言
-
陣列(Arrays)
-
閉包(Closure)
-
註解(Comments)
-
修正作用範圍(Fixing Scope)
-
-
第14章:文件物件模型
-
建立表格(Build a Table)
-
從標籤查詢名稱(Elements by Tag Name)
-
貓與帽子(The Cat’s Hat)
-
-
第15章:事件處理
-
氣球(Balloon)
-
滑鼠的拖曳軌跡(Mouse Trail)
-
分頁式介面(Tabs)
-
-
第16章:專案:2D平面遊戲
-
暫停遊戲(Pausing the Game)
-
怪物(A Monster)
-
-
第17章:繪圖:Canvas元素
-
形狀(Shapes)
-
圓餅圖(The Pie Chart)
-
彈跳球(A Bouncing Ball)
-
預先計算鏡像圖(Precomputed Mirroring)
-
-
第18章:HTTP與表單
-
內容協商(Content Negotiation)
-
編寫JavaScript程式的工作環境(A JavaScript Workbench)
-
康威生命遊戲(Conway’s Game of Life)
-
-
第19章:實作專案:小畫家線上版
-
快捷鍵(Keyboard Bindings)
-
繪圖效率(Efficient Drawing)
-
繪製圓形(Circles)
-
繪製直線(Proper Lines)
-
-
第20章:伺服器端開發環境:NODE.JS入門
-
搜尋工具(Search Tool)
-
建立目錄(Directory Creation)
-
在網站上提供公用空間(A Public Space on the Web)
-
-
第21章:實作專案:技能交流網站
-
在硬碟裡留存資料(Disk Persistence)
-
重置評論欄位(Comment Field Resets)
-
-
第22章:提升JavaScript效能的技巧
-
路徑搜尋(Pathfinding)
-
最佳化(Optimizing)
-
-
- 出版地 : 臺灣
- 語言 : 繁體中文
評分與評論
請登入後再留言與評分