紅寶書與我的JavaScript學(xué)習(xí)之路

本文由圖靈社區(qū)阿貍不歌原創(chuàng)。

我的JavaScript入門書是Head First JavaScript Programming: A Brain-Friendly Guide,看過Head First系列的都知道這個系列是IT技術(shù)入門最容易的書。當(dāng)時看的是英文版,欣聞圖靈最近即將出版其中文版《Head First JavaScript程序設(shè)計》,推薦所有零基礎(chǔ)想學(xué)JavaScript的童鞋都讀一讀這本書,看完后入門JavaScript絕對沒問題。


學(xué)習(xí)過《Head First JavaScript程序設(shè)計》之后,對于閱讀JavaScript的基礎(chǔ)語法應(yīng)該是沒有太大問題了,但是因為《Head First JavaScript程序設(shè)計》作為一門入門型的書籍,并不會在(高級)細(xì)節(jié)上過多深入,所以當(dāng)我們要進(jìn)一步提升JavaScript代碼閱讀/編寫能力的時候,肯定會遇到讀不懂/搞不定的事情 —— 這是一件好事,這意味著我們要邁向JavaScript高級編程了,而《JavaScript高級程序設(shè)計(第3版)》正是這樣一本符合我們追求上進(jìn)需求的好書。
本書第三章用了大約50頁的篇幅細(xì)致地介紹了JavaScript的基本語法,如果你哪里忘記了就重溫一下,第四、五章又用了大約70頁的篇幅詳細(xì)介紹了變量、作用域和引用類型。
如果你嫌《JavaScript高級程序設(shè)計(第3版)》太重,也可以拿一本薄的《JavaScript語言精粹》—— 又稱蝴蝶書,只有100來頁,可以很快看完,故名“精粹 ”。蝴蝶書的作者是道格拉斯·克羅克福特(Douglas Crockford,JSON的締造者),蝴蝶書對于了解JavaScript的基礎(chǔ)知識,比如對象、數(shù)組、語法、作用域、閉包等等都頗有幫助,在JavaScript的代碼風(fēng)格上也給出不少好的建議。?


進(jìn)入到第六章,是面向?qū)ο蟮某绦蛟O(shè)計,這應(yīng)該是本書的一個重點,也是每個JavaScript寫手應(yīng)該熟知的內(nèi)容。本書推出之時,距ECMAScript 5.1版發(fā)布并成為ISO國際標(biāo)準(zhǔn)也沒有多久,ECMAScript 5.1里是沒有類的概念的,因此依據(jù)ECMAScript 5.1的標(biāo)準(zhǔn)來寫OOP風(fēng)格的程序與典型的面向?qū)ο笳Z言(比如Java)有比較大的差別。
通過本章,你將學(xué)到JavaScript獨(dú)特的面向?qū)ο蟮木幊谭绞剑瑨仐墶邦悺钡母拍詈突凇邦惖睦^承”,學(xué)習(xí)基于原型的繼承和構(gòu)造函數(shù)。并且將學(xué)會如何創(chuàng)建對象、定義自己的類型、使用繼承以及其他各種操作來充分使用對象。
本書作者 尼古拉斯·扎卡斯(Nicholas C. Zakas)可能覺得用JavaScript寫OOP這個事情可能會對典型的Java程序員造成困擾,還專門寫了一本《JavaScript面向?qū)ο缶罚钊胩接懥嗽碱愋秃鸵妙愋?、函?shù)、對象、構(gòu)造函數(shù)和原型對象、繼承和對象模式等主題和特性,如果嫌本書寫的還不夠,可以專門閱讀扎卡斯的這本不足百頁的面向?qū)ο缶?


函數(shù)是JavaScript世界的第一公民,如果說搞不清楚如何用JavaScript來寫面向?qū)ο蟮某绦蜻€不算致命,要是搞不清楚函數(shù)表達(dá)式,那在JavaScript的世界里就基本沒法混了。
JavaScript函數(shù)編程里,繞不過去的一個彎就是“閉包”,貌似也是很多前端面試必考的內(nèi)容。本書、前面提到的蝴蝶書都對閉包做了詳細(xì)解釋。另外圖靈出的《你不知道的JavaScript(上卷)》第一部分也是專門介紹JavaScript作用域和閉包的,可以共同借鑒參詳。


其實本書的英文名字是?Professional JavaScript for Web Developers(中文版譯名省掉了 “for Web Developers”),也就是說本書其實主要是為Web開發(fā)者準(zhǔn)備的,從第八章開始,本書為Web開發(fā)專門準(zhǔn)備了三分之二以上的篇幅,如果你學(xué)習(xí)JavaScript是專門為了服務(wù)端開發(fā),那么看完第七章就可以找《深入淺出Node.js》和《Node.js實戰(zhàn)》了。


作為標(biāo)準(zhǔn)的前端JavaScript程序員,BOM和DOM、事件都是必備知識,本書用三分之一的篇幅涵蓋了BOM和DOM的方方面面。當(dāng)然,本書出來的時候,一些古老版本的IE瀏覽器還占據(jù)著統(tǒng)治地位,所以本書還不得不特別花了不少篇幅為IE開小灶,現(xiàn)在大部分前端程序員可能可以不那么提心吊膽地考慮瀏覽器的兼容性問題了。關(guān)于DOM,圖靈還有一本《JavaScript DOM編程藝術(shù)(第2版)》,翻譯質(zhì)量很高,語言通俗易懂,也是適合DOM入門的佳作。?


本書剩下的三分之一篇幅則包含了前端開發(fā)的其余方方面面——HTML5、XML、JSON、Ajax、E4X、客戶端存儲等等,足以讓我們領(lǐng)略Web開發(fā)會遇到的知識點,這每一個知識點又可以擴(kuò)充為一本書。圖靈這方面的書很多,諸如:《HTML5秘籍》《HTML5權(quán)威指南》《XML基礎(chǔ)教程》《JSON必知必會》《Ajax高級程序設(shè)計》《客戶端存儲技術(shù)》等等……


Nicholas C. Zakas在第24章介紹了JavaScript編程的最佳實踐方法,著重于可維護(hù)性和性能。關(guān)于這兩點,尼古拉斯專門還寫了兩本書,分別是《編寫可維護(hù)的JavaScript》《高性能JavaScript》,有興趣的童鞋可以深入鉆研。?


關(guān)于ES6 / ES2015、ES2016、ES2017 ,《JavaScript高級程序設(shè)計(第3版)》出版的時候,ES6 還沒有影呢,但是近幾年來,JavaScript發(fā)展可謂日新月異,本書作者尼古拉斯也沒有把讀者們落下,于2016年出版了?Understanding ECMAScript 6: The Definitive Guide for JavaScript Developers,其中文版《深入理解ES6》也已經(jīng)于近日出版發(fā)行,書中詳細(xì)講解了ES6在JavaScript對象類型、語法及其他方面激動人心的改變,是專門為熟悉JavaScript和ECMAScript 5的讀者準(zhǔn)備的指南,幫助大家理解ECMAScript 5和6之間的差異。
最后,大家可能會關(guān)心:出了這么多新技術(shù),我們的JavaScript紅寶書會不會更新啊?放心,Professional JavaScript for Web Developers 4th Edition?已經(jīng)蓄勢待發(fā),讓我們好好期待吧。


