現已發布:面向對象 JavaScript 的原理
我很自豪地宣布面向對象 JavaScript 的原則 正在發貨!對於經常閱讀的讀者,這本書是我在 2013 年初出版的自行出版的電子書《JavaScript 中的面向對象編程原理》的印刷版。
電子書的誕生
整個過程是在與 Kate Matsudaira 聊天后開始的。我們正在談論出版的來龍去脈,她設法說服我應該自行出版我的下一本書。經過一番研究,我最終選擇了 Leanpub 作為出版商。我真的很喜歡他們的服務:
- 可以用 Markdown 編寫書籍
- 自動生成三種格式的電子書
- 自動定制產品頁面
- 處理付款和退款
- 通過 PayPal 支付版稅
- 讀者可以選擇他們想要支付的金額
- 能夠隨時更新電子書並允許現有讀者免費更新
我選擇這個主題是因為我當時正在諮詢,並且正在教授一門關於 JavaScript 面向對象編程的全日課程。雖然我會給與會者留下一份幻燈片的副本,但我覺得這還不足以讓他們記住我們討論過的所有內容。我認為一本以相同順序和相同示例涵蓋主題的配套書籍將非常有用。於是我就開始寫了。
我很快意識到這將是一本很短的書,比我的大多數其他書要短得多。與 面向 Web 開發人員的專業 JavaScript 相比 ,超過 900 頁,這本書將在 100 頁以下。這讓我很高興,因為我知道 900 頁可能令人生畏。我也越來越喜歡專注於特定主題的短書。
不輸入澱粉
電子書完成後,我認為現有出版商將其作為實體書出版的可能性不大。大多數出版商想要大約 200 頁。我想如果有足夠的興趣,我也會嘗試自行出版實體書,但我會等著看反應如何。
去年,我在 Fluent 與 No Starch Press 的 Bill Pollack 進行了一次對話。我向他解釋了我在做什麼,他分享了無澱粉如何處理出版。我真的很喜歡他描述的老派方法:嚴肅的文案和技術編輯,微調主題和語氣,以及每年推出少量高質量書籍的方法。我們握手離開,如果他喜歡他所讀的內容,我們會再談。
讀完這本電子書後,比爾認為繼續創作一本實體書是值得的。 No Starch 不是第一個接觸我的出版商,但他們絕對覺得自己是對的。我最大的擔憂之一是能否繼續在 Leanpub 上銷售,這樣我就可以履行對已經購買電子書的人的承諾。在其他出版商說我必須取消 Leanpub 產品的地方,No Starch 允許我繼續這樣做。
與 No Starch 的人們一起工作很棒,這讓我想起了十年前的出版情況。文案編輯非常棒,真的使我的很多敘述變得平滑。 Angus Croll 的技術編輯非常有用,而且非常挑剔(說真的,如果你認為你的技術編輯不挑剔,你需要找一個新的)。還有封面設計,嗯,我高興極了(主題是 JavaScript 作為驅動 Web 和服務器的引擎)。
Code Lindley 欣然同意為 No Starch 版本寫前言。
這本書是什麼?
首先,這本書是我自己出版的電子書的印刷版,但有實際的副本編輯、技術編輯和專業圖形。涵蓋的主題是相同的,並且大多以相同的方式涵蓋(無澱粉版本在某些地方有額外的說明)。作為獎勵,還有 No Starch 電子書版本。
這本書本身就是關於理解 JavaScript 中的對象。主題包括:
- 原始值和參考值的區別
- 是什麼讓 JavaScript 函數如此獨特
- 創建對象的各種方式
- 使用 ECMAScript 5 的數據屬性和訪問器屬性的區別
- 如何定義自己的構造函數
- 如何使用和理解原型
- 類型和對象的各種繼承模式
- 如何創建私有和特權對象成員
- 如何使用 ECMAScript 5 功能防止修改對象
我想用這本書做的一件事就是把 ECMAScript 5 當作 JavaScript 的當前版本。仍然有很多書最終會說“如果你的瀏覽器支持 ECMAScript 5,就這樣做”。我想展望未來,ECMAScript 5 是每個人都使用的最低版本,因此我選擇取消那些限定語句並在整個過程中完全使用 ECMAScript 5 術語。
我還以這樣一種方式編寫了這本書,它既適用於 Web 開發人員,也適用於 Node.js 開發人員。很少提及 Web 瀏覽器或 Node.js,這是有意的,專注於普遍適用的 JavaScript 核心。
總的來說,我為這本書感到非常自豪。我認為它足夠短,不會令人生畏,但足夠密集,你應該對 JavaScript 中的面向對象概念有一個很好且相當深入的理解。雖然我不打算為這種材料製作一本真正的印刷書,但我對結果非常滿意。感謝所有參與其中的人——這是一段有趣的旅程。