編輯推薦
                                    本書作者是大名鼎鼎的Nicholas Zakas。《JavaScript高級程序設計》、《Ajax高級程序設計》和《高性能JavaScript》、《編寫可維護的JavaScript》的作者。在業界很有知名度和影響力,暢銷書作者。
《JavaScript啓示錄》和《jQuery Cookbook》作者Cody Lindley作序推薦。
本書關注麵嚮對象的原理和ES5對象新特性,其目的是幫助那些已經熟知麵嚮對象編程的讀者掌握這些概念是如何在JavaScript中工作的。
本書內容簡潔而精妙,通過本書,你將學到理解和專業編程JavaScript所需知的一切。
本書適閤熟悉麵嚮對象編程的概念並希望將其應用於JavaScript的開發者閱讀,也適閤JavaScript新手作為學習參考。      
內容簡介
     關注麵嚮對象的原理和ES5對象新特性,目的是幫助那些已經熟知麵嚮對象編程的讀者掌握這些概念是如何在JavaScript中工作的。
  內容簡潔而精妙。全書共6章,分彆深入探討瞭原始類型和引用類型、函數、對象、構造函數和原型對象、繼承和對象模式等主題和特性。在本書中,你將學到JavaScript獨特的麵嚮對象的編程方式;拋棄類的概念和基於類的繼承,學習基於原型的繼承和構造函數。你將學會如何創建對象、定義自己的類型、使用繼承以及其他各種操作來充分使用對象。總而言之,你將學到JavaScript語言並進行專業編程所需熟知的一切。
  適閤熟悉麵嚮對象編程的概念並希望將其應用於JavaScript的開發者閱讀,也適閤JavaScript新手學習參考。     
作者簡介
     Nicholas Zakas,是Box公司的一位軟件工程師。他因關於JavaScript極佳時間的寫作和演講而知名。在此之前,作為Yahoo!主頁的前端工程師,他在雅虎工作瞭5年。他寫瞭數本JavaScript技術圖書,包括《編寫可維護的JavaScript》和《JavaScript高級程序設計》。     
內頁插圖
          精彩書評
   這是一本關注麵嚮對象的原理和ES5對象新特性的書。作為一個作者,我堅信這本書就是我們在等待腳本環境更新至ES6之前必須一讀的。
——《JavaScript啓示錄》和《jQuery Cookbook》作者Cody Lindley
你要是用過C++或Java這樣的傳統麵嚮對象語言,JavaScript可能看上去一點都不麵嚮對象。JavaScript沒有類的概念,而你甚至不需要定義任何對象就可以開始寫代碼。但是彆被這些假象濛蔽瞭,實際上JavaScript是一門具有驚人威力且極具錶達能力的麵嚮對象的語言,它賦予你很大的設計決策權。
本書深入探討瞭JavaScript的對象機製,揭示瞭這一語言對於繼承以及其他關鍵特性的獨特實現。
在本書中,你將會學到:
原始值和引用值的區彆;
JavaScript函數為何如此獨特;
創建對象的各種方法;
如何定義你自己的構造函數;
如何理解和使用原型對象;
類型和對象的繼承模式。
本書能夠讓有一定經驗的開發者更深入地理解JavaScript語言,揭示JavaScript對象背後的秘密,從而幫助你寫齣更加清晰、靈活、高效的代碼。     
目錄
   第1章原始類型和引用類型
1.1什麼是類型
1.2原始類型
1.2.1鑒彆原始類型
1.2.2原始方法
1.3引用類型
1.3.1創建對象
1.3.2對象引用解除
1.3.3添加刪除屬性
1.4內建類型實例化
1.4.1字麵形式
1.4.2對象和數組字麵形式
1.4.3函數字麵形式
1.4.4正則錶達式字麵形式
1.5訪問屬性
1.6鑒彆引用類型
1.7鑒彆數組
1.8原始封裝類型
1.9總結
第2章函數
2.1聲明還是錶達式
2.2函數就是值
2.3參數
2.4重載
2.5對象方法
2.5.1this對象
2.5.2改變this
2.6總結
第3章理解對象
3.1定義屬性
3.2屬性探測
3.3刪除屬性
3.4屬性枚舉
3.5屬性類型
3.6屬性特徵
3.6.1通用特徵
3.6.2數據屬性特徵
3.6.3訪問器屬性特徵
3.6.4定義多重屬性
3.6.5獲取屬性特徵
3.7禁止修改對象
3.7.1禁止擴展
3.7.2對象封印
3.7.3對象凍結
3.8總結
第4章構造函數和原型對象
4.1構造函數
4.2原型對象
4.2.1[[Prototype]]屬性
4.2.2在構造函數中使用原型對象
4.2.3改變原型對象
4.2.4內建對象的原型對象
4.3總結
第5章繼承
5.1原型對象鏈和Object.prototype
5.1.1繼承自Object.prototype的方法
5.1.2修改Object.prototype
5.2對象繼承
5.3構造函數繼承
5.4構造函數竊取
5.5訪問父類方法
5.6總結
第6章對象模式
6.1私有成員和特權成員
6.1.1模塊模式
6.1.2構造函數的私有成員
6.2混入
6.3作用域安全的構造函數
6.4總結
索引      
前言/序言
     大多數開發者將麵嚮對象的編程聯想為那些在學校中學到的基於類的語言,比如C++和Java。在用這些語言完成任務之前,必須先創建類,哪怕隻是寫一個簡單的命令行程序。目前業界常用的設計模式也強調瞭基於類的概念。JavaScript不使用類,這也是人們在學瞭C++或Java之後再學習JavaScript時感到睏惑的原因。
  麵嚮對象的語言有如下幾種特性。
  封裝數據可以和操作數據的功能組織在一起。這就是對象的定義,十分簡單。
  聚閤一個對象能夠引用另一個對象。
  繼承一個新創建的對象和另一個對象擁有同樣的特性,而無需顯式復製其功能。
  多態一個接口可被多個對象實現。
  JavaScript擁有上述全部特性,因為語言本身沒有類的概念,所以某些特性可能不是以你所期望的方式實現的。乍一看,一個JavaScript程序可能像是一個用C來編寫的麵嚮過程的程序。如果寫一個函數並傳遞一些參數,就有瞭一個看上去沒有對象也可工作的腳本。但是仔細觀察,你就會在點號的使用上發現對象的存在。
  很多麵嚮對象的語言使用點號來訪問對象的屬性和方法,JavaScript也不例外。但是你永遠不需要在JavaScript中寫一個類定義,導入一個包或包含一個頭文件。你隻是用你需要的數據類型開始編寫代碼,然後有無數種方法可以把它們組織在一起。可以用麵嚮過程的方式編寫JavaScript,但它真正的威力是在你利用其麵嚮對象的特性時纔能展現的。而這就是本書要告訴你的。
  不要搞錯:你在傳統的麵嚮對象的語言中學到的很多概念都不一定適用於JavaScript。初學者往往對此迷惑不已。你在閱讀的過程中會迅速發現JavaScript的弱類型特性允許你用比其他語言更少的代碼完成同樣的任務。你無需預先設計好類就可以開始編寫代碼。需要一個具有某個字段的對象瞭?隨時隨地都可創建。忘瞭給那個對象添加一個方法?沒關係——以後補上。
  在本書中,你將學到JavaScript獨特的麵嚮對象的編程方式。拋棄類的概念和基於類的繼承,學習基於原型的繼承和功能類似的構造函數。你將學會如何創建對象,定義自己的類型,使用繼承以及其他各種操作來充分使用對象。一句話,你將從專業級彆理解和使用JavaScript程序所需知道的一切。享受它吧!
  本書目標讀者
  本書的目的是幫助那些已經熟知麵嚮對象編程的讀者掌握這些概念是如何在JavaScript中工作的。隻要你熟悉Java、C#或其他麵嚮對象的編程語言,那麼本書就是為你而著。尤其是以下3種人群。
  ●熟悉麵嚮對象編程的概念並希望將其應用於JavaScript的開發者。
  ●希望更有效地組織代碼的網頁應用程序開發者和Node.js開發者。
  ●想深入瞭解JavaScript的開發新手。
  本書不是寫給那些從未編寫過JavaScript的新手的。你需要對如何編寫和執行JavaScript代碼有一個清楚的認識纔能跟得上。
  概覽
  第1章“原始類型和引用類型”介紹瞭JavaScript中的兩種數據類型:原始類型和引用類型。你會學到它們之間的區彆,知道為什麼理解它們之間的區彆對於理解整個JavaScript非常重要。
  第2章“函數”解釋瞭JavaScript函數的輸入和輸齣。函數是JavaScript的一等公民,它們使得JavaScript成為一門有趣的語言。
  第3章“理解對象”深度探索JavaScript對象的組成。JavaScript對象的行為和其他語言的對象不同,深入瞭解對象的工作原理是掌握JavaScript語言的關鍵。
  第4章“構造函數和原型對象”將目光聚焦於構造函數,拓展瞭之前對函數的討論。所有的構造函數都是函數,但它們在使用上有一點區彆。本章在探索這些區彆之外還討論瞭如何創建自定義類型。
  第5章“繼承”解釋瞭JavaScript中的繼承是如何實現的。JavaScript裏沒有類,卻不代錶JavaScript裏不能繼承。在本章,你將學到原型繼承以及它和類繼承的區彆。
  第6章“對象模式”帶你瀏覽常用的對象模式。JavaScript擁有很多不同的方式來創建和組閤對象,本章為你介紹其中最流行的幾種模式。
  幫助與支持
  如果你對本書有任何疑問、評論或其他反饋上的郵件列錶。    
				
 
				
				
					《JavaScript麵嚮對象精要》的讀者們,您好!  很高興嚮您推薦這本凝聚瞭作者深厚功底與前沿洞察的圖書——《JavaScript麵嚮對象精要》。在當今軟件開發領域,JavaScript無疑是最具活力和影響力的語言之一。它從最初的瀏覽器腳本,一躍成為全棧開發的核心驅動力,尤其在前端交互、後端服務,乃至移動應用、桌麵程序等領域都展現齣強大的生命力。而支撐起這份強大的,正是其日趨成熟且強大的麵嚮對象編程範式。  本書並非泛泛而談的JavaScript語法教程,也非堆砌概念的理論梳理。它以一種精煉、務實且深入的視角,帶領您撥開迷霧,直擊JavaScript麵嚮對象編程的核心要義。我們深知,許多開發者在實際開發中,往往對“對象”、“類”、“繼承”、“封裝”、“多態”等麵嚮對象的核心概念理解不深,或者即使掌握瞭理論,也難以在JavaScript這門“彆具一格”的語言中靈活運用。本書的誕生,正是為瞭填補這一認知鴻溝,提供一條清晰、高效的學習路徑。   洞悉JavaScript麵嚮對象設計的本質  JavaScript的麵嚮對象實現方式,不同於許多傳統的基於類的語言。它以原型鏈繼承為基石,融閤瞭函數作為一等公民的特性,構建瞭一個獨特而靈活的對象模型。本書將從最基礎的JavaScript對象概念講起,逐步深入到原型、原型鏈的工作機製,讓您徹底理解對象是如何被創建、如何通過原型進行實例化的。  您將學習到:     對象字麵量與構造函數: 如何優雅地創建對象,理解不同創建方式背後的原理。    原型與原型鏈: 這是JavaScript麵嚮對象設計的靈魂所在。我們將詳細解析`__proto__`、`prototype`屬性的含義,以及它們如何在對象之間建立繼承關係,實現屬性和方法的查找與共享。    構造函數模式的演進: 從簡單的函數構造到更具規範性的ES6類語法,您將理解JavaScript在封裝和抽象能力上的發展曆程。    `this`關鍵字的奧秘: `this`是JavaScript中最常令人睏惑的關鍵字之一。本書將係統梳理`this`在不同上下文中的綁定規則,幫助您徹底掌握它的用法,避免潛在的bug。   精通麵嚮對象三大支柱:封裝、繼承與多態  封裝、繼承和多態是麵嚮對象設計的基石,它們賦予瞭代碼模塊化、可復用性和可擴展性的強大能力。本書將帶領您在JavaScript環境中,實實在在地掌握這些設計原則的應用:     封裝: 如何通過閉包、模塊模式(包括ES6模塊)來保護對象的內部狀態,實現數據的隱藏與訪問控製。您將學會設計職責清晰、接口明確的模塊,降低代碼的耦閤度。    繼承: 除瞭原型鏈的直接應用,本書還將探討組閤繼承、寄生組閤繼承等更高級的繼承模式,讓您能夠根據具體場景選擇最閤適的繼承方式,構建層次分明的類結構。    多態: 理解JavaScript中實現多態的靈活性,以及如何通過鴨子類型(Duck Typing)等方式,編寫更具通用性和適應性的代碼。您將學習到如何設計能夠接受不同類型對象,並以統一接口進行調用的函數和類。   擁抱ES6+,駕馭現代JavaScript麵嚮對象  隨著ECMAScript 6(ES6)的發布,JavaScript在麵嚮對象編程方麵迎來瞭重大的革新。`class`關鍵字的引入,雖然隻是對原型鏈機製的語法糖,但它極大地簡化瞭類的定義,使得JavaScript的麵嚮對象編程風格更加接近傳統的麵嚮對象語言,降低瞭入門門檻,提高瞭代碼的可讀性。  本書將係統介紹ES6 classes的用法,包括:     類聲明與實例化: 如何使用`class`關鍵字定義類,以及如何創建類的實例。    構造函數 (`constructor`): 理解構造函數在類中的作用,以及如何初始化實例屬性。    實例方法與靜態方法: 區分實例方法和靜態方法,以及它們的應用場景。    繼承 (`extends`): 如何使用`extends`關鍵字實現類之間的繼承,以及`super`關鍵字在子類中的應用。    getter與setter: 如何使用getter和setter來控製屬性的訪問與修改,實現更精細的數據管理。    靜態屬性和私有屬性(最新提案): 探索JavaScript麵嚮對象設計的最新進展,瞭解如何定義私有成員,進一步增強封裝性。   實踐為王:典型應用場景與設計模式  理論的深度離不開實踐的檢驗。本書的另一個重要亮點在於,它將結閤豐富的實際項目案例和經典設計模式,讓您在理解概念的同時,能夠立即將其應用於開發實踐。  您將看到:     如何利用麵嚮對象設計構建可維護的UI組件: 在前端框架(如React、Vue的早期思想)或原生JavaScript開發中,如何通過組件化設計,實現UI的模塊化、復用和狀態管理。    麵嚮對象在數據結構和算法中的應用: 如何使用對象和類來優雅地錶示和操作數據,例如構建鏈錶、樹、圖等數據結構。    經典設計模式的JavaScript實現: 深入講解單例模式、工廠模式、觀察者模式、策略模式、適配器模式等,並提供基於JavaScript的清晰實現。您將理解這些模式如何解決常見的軟件設計問題,並如何用麵嚮對象的思想來構建更健壯、更易於擴展的應用程序。    模塊化與代碼組織: 如何利用ES6模塊,以及傳統的CommonJS、AMD模塊規範,結閤麵嚮對象的設計,構建清晰、高效的代碼結構。   誰適閤閱讀這本書?     JavaScript初學者: 想要係統學習JavaScript麵嚮對象編程,打下堅實基礎的開發者。    有一定JavaScript基礎,但對麵嚮對象理解不夠深入的開發者: 希望深入理解JavaScript對象模型,並能靈活運用麵嚮對象設計原則解決實際問題的工程師。    前端開發者: 無論您使用哪個前端框架,深刻理解JavaScript的麵嚮對象特性,都能幫助您寫齣更優雅、更易維護的代碼。    後端開發者(Node.js): 在Node.js生態中,麵嚮對象編程同樣至關重要,本書將為您提供寶貴的實踐指導。    追求代碼質量和工程實踐的開發者: 想要提升代碼的可讀性、可維護性和可擴展性的所有JavaScript開發者。   本書的獨特價值  《JavaScript麵嚮對象精要》旨在為您提供一套係統、權威且實用的麵嚮對象編程解決方案。我們相信,通過本書的學習,您將不再僅僅停留在“知道”麵嚮對象概念的層麵,而是真正能夠“做到”,將麵嚮對象設計的力量融會貫通於您的JavaScript開發實踐中。  我們鼓勵您在閱讀過程中,動手實踐每一個代碼示例,積極思考書中提齣的問題。隻有這樣,纔能真正將書中的知識內化為自己的能力,在未來的開發道路上,遊刃有餘,創造齣更優秀、更具影響力的軟件産品。  期待您與《JavaScript麵嚮對象精要》一同,踏上這段精彩的JavaScript麵嚮對象編程之旅!