PDF
本書有DRM加密保護,需使用HyRead閱讀軟體開啟
  • Effective JavaScript 中文版:駕馭JavaScript 的68個具體作法
  • 點閱:182
  • 譯自:Effective JavaScript:68 specific ways to harness the power of JavaScript
  • 作者: David Herman著 , 黃銘偉譯
  • 出版社:碁峰資訊
  • 出版年:2017[民106]
  • ISBN:978-986-476-431-0 ; 986-476-431-4
  • 格式:PDF
  • 附註:原紙本書ISBN : 9789862768921 含索引

內容簡介
 
駕馭 JavaScript 的 68 個具體作法
 
為了真正精通 JavaScript,你必須知道如何有效運用這個語言富有彈性又具表達能力的特色,以及知道如何避免其中常見的陷阱。不管你已經撰寫了多久的 JavaScript 程式碼,Effective JavaScript 都能增進你對這個強大語言的理解,讓你能夠建置更容易預測、更可靠且更容易維護的程式。

 
作者 David Herman 具有 Ecma 的 JavaScript 標準化委員會數年的工作經驗,他以前所未見的深度闡明這個語言的內部運作原理,幫助你完全掌握 JavaScript 強大的表達能力。立基於 JavaScript 最新的幾個版本,本書提供經過充分驗證的技巧以及最佳實務做法,協助你為未來的開發工作做好準備。
 
Effective JavaScript 是由 68 個經過驗證、能夠幫助你寫出更好的 JavaScript 程式碼的具體作法所構成,並輔以實例來闡述說明。你會學到如何為每個專案挑選適當的程式寫作風格、管理無法預料的問題,並以更良好的方式來處理 JavaScript 程式設計的各個面向,諸如資料結構或共時性(concurrency)。關鍵的特色包括:
 
■ 以更好的方式來使用基於原型(prototype)的物件導向程式設計
■ 使用陣列與字典(dictionary)物件時可能遭遇到的細微問題以及它們的解法
■ 對 JavaScript 函式與變數範疇(variable scoping)語意的精確且務實的解說
■ 實用的 JavaScript 程式設計模式與慣用語法,例如選項物件(options objects)及方法鏈串(method chaining)
■ 深入介紹 JavaScript 獨特的「run-to-completion」共時模型


作者簡介
 
David Herman
 
Mozilla Research 的資深研究員。他是 Ecma TC39 的成員,這個委員會負責 JavaScript 的標準化工作。他擁有 Grinnell College 的電腦科學學士學位,以及 Northeastern University 的電腦科學碩士與博士學位。

  • 前言(第xi頁)
  • 序言(第xiii頁)
  • 致謝(第xv頁)
  • 關於作者(第xvii頁)
  • 第 1 章 讓你自己習慣 JavaScript(第1頁)
    • 條款 01 知道你所用的是哪個 JavaScript(第1頁)
    • 條款 02 了解 JavaScript 的浮點數字(第7頁)
    • 條款 03 小心隱含的強制轉型(Implicit Coercions)(第10頁)
    • 條款 04 優先選用基本型別而非物件包覆器(第16頁)
    • 條款 05 避免把 == 用在混合的型別上(第18頁)
    • 條款 06 了解分號插入的限制(第21頁)
    • 條款 07 把字串想成是 16 位元編碼單位的序列(第28頁)
  • 第 2 章  變數範疇(第33頁)
    • 條款 08 盡量少用全域物件(第33頁)
    • 條款 09 總是宣告區域變數(第36頁)
    • 條款 10 避免使用 with(第37頁)
    • 條款 11 善於使用 Closures(第41頁)
    • 條款 12 了解變數的拉升(Variable Hoisting)(第44頁)
    • 條款 13 使用即刻調用的函式運算式來建立區域範疇(第47頁)
    • 條款 14 小心具名的函式運算式造成不可移植的範疇(第50頁)
    • 條款 15 小心 Block-Local 函式宣告造成不可移植的範疇(第54頁)
    • 條款 16 避免使用 eval 來建立區域變數(第56頁)
    • 條款 17 優先選用間接的 eval 而非直接的 eval(第58頁)
  • 第 3 章 函式的使用(第61頁)
    • 條款 18 了解函式呼叫、方法呼叫以及建構式呼叫之間的差異(第61頁)
    • 條款 19 熟悉高階函式的用法(第64頁)
    • 條款 20 使用 call 以自訂的接收者來呼叫方法(第68頁)
    • 條款 21 使用 apply 以不同數目的引數來呼叫函式(第70頁)
    • 條款 22 使用 arguments 來建立可變參數的函式(第72頁)
    • 條款 23 永不修改 arguments 物件(第74頁)
    • 條款 24 使用一個變數來儲存對 arguments 的參考(Reference)(第76頁)
    • 條款 25 使用 bind 擷取出具有固定接收者的方法(第78頁)
    • 條款 26 使用 bind 建立 Curry 函式(第80頁)
    • 條款 27 封裝程式碼時優先選用 Closures 而非使用字串(第81頁)
    • 條款 28 避免仰賴函式的 toString 方法(第84頁)
    • 條款 29 避免非標準的堆疊查閱特性(第85頁)
  • 第 4 章 物件和原型(第89頁)
    • 條款 30 了解 prototype、getPrototypeOf 與 __proto__ 之間的差異(第89頁)
    • 條款 31 優先選用 Object.getPrototypeOf 而非 __proto__(第93頁)
    • 條款 32 永不修改 __proto__(第94頁)
    • 條款 33 不要假設你的建構式會透過 new 來呼叫(第95頁)
    • 條款 34 將方法儲存在原型上(第98頁)
    • 條款 35 使用 Closures 來儲存私有資料(第100頁)
    • 條款 36 只在實體物件上儲存實體狀態(第102頁)
    • 條款 37 認出 this 的隱含繫結(第105頁)
    • 條款 38 從子類別的建構式呼叫超類別的建構式(第108頁)
    • 條款 39 永不重複使用超類別的特性名稱(第113頁)
    • 條款 40 避免繼承標準類別(第114頁)
    • 條款 41 把原型視為是實作細節(第117頁)
    • 條款 42 避免輕率的 Monkey-Patching(第118頁)
  • 第 5 章 陣列與字典(第121頁)
    • 條款 43 從 Object 的直接實體建置出輕量化的字典(第121頁)
    • 條款 44 使用 null 原型來防止原型汙染(第125頁)
    • 條款 45 使用 hasOwnProperty 來防止原型汙染(第126頁)
    • 條款 46 優先選用陣列來建立有序群集而非使用字典(第132頁)
    • 條款 47 不要把可列舉的特性加到 Object.prototype 中(第134頁)
    • 條款 48 避免在列舉時修改一個物件(第136頁)
    • 條款 49 陣列迭代時優先選用 for 迴圈,而非 for...in 迴圈(第142頁)
    • 條款 50 優先使用迭代方法而非迴圈(第143頁)
    • 條款 51 在類陣列物件上重複使用一般化的 Array 方法(第148頁)
    • 條款 52 優先使用陣列字面值而非 Array 建構式(第151頁)
  • 第 6 章 程式庫與 API 設計(第153頁)
    • 條款 53 維持前後一致的慣例(第153頁)
    • 條款 54 把 undefined 視為「沒有值」(第155頁)
    • 條款 55 為關鍵字引數接受選項物件(第159頁)
    • 條款 56 避免非必要的狀態(第164頁)
    • 條款 57 使用結構性定型來設計彈性的介面(第167頁)
    • 條款 58 區別陣列及類陣列物件(第172頁)
    • 條款 59 避免過度的強制轉型(第176頁)
    • 條款 60 支援方法鏈串(第180頁)
  • 第 7 章 共時性(第183頁)
    • 條款 61 別阻斷 I/O 上的事件佇列(第184頁)
    • 條款 62 使用巢狀或具名的回呼函式來進行非同步定序(第187頁)
    • 條款 63 小心遺漏的錯誤(第192頁)
    • 條款 64 使用遞迴來進行非同步迴圈(第196頁)
    • 條款 65 別阻斷計算工作上的事件佇列(第199頁)
    • 條款 66 使用一個計數器來進行共時作業(第203頁)
    • 條款 67 永遠不要同步地呼叫非同步的回呼函式(第208頁)
    • 條款 68 使用 Promises (承諾)來獲得較為乾淨的非同步邏輯(第211頁)
  • 索引(第215頁)
紙本書 NT$ 450
單本電子書
NT$ 315

還沒安裝 HyRead 3 嗎?馬上免費安裝~
QR Code