出版時間:2008 出版社:清華大學出版社 作者:月影 頁數(shù):712
Tag標簽:無
前言
你好,很高興你能翻開這本書——《JavaScript王者歸來》?! 械摹巴跽摺保⒉皇侵肝疫@個作者,而是指你們——偶然地停下來,饒有興趣地翻閱這本書的每一位讀者。正是你們對JavaScript和Web開發(fā)的濃厚興趣和熱情,使得Web領(lǐng)域發(fā)生了和正在發(fā)生著翻天覆地的變化,也使得我有信心和毅力去完成這樣一本厚厚的書。所以,這本書,是獻給你們的,現(xiàn)在的和將來的JavaScript王者們! 這是一本什么樣的書呢?作為作者,我很希望它能成為一本帶著神奇力量的魔法書,能夠?qū)⒛銓夹g(shù)的興趣,轉(zhuǎn)化為神奇的魔力,幫助你在Web應用中寫出不可思議的奇跡般的漂亮代碼。當然,也許這只是我的一個美好的愿望,但是如果你是帶著興趣和熱情來讀這本書,并且愿意和我一起探尋JavaScript王國的奧秘,那么,這本書中一定有著能讓你著迷的東西。 JavaScript是一位美麗而又難以捉摸的叢林女神,她干凈利落而又變化多端,她的美麗能夠帶給你喜悅和幸福感,她的善變,卻又讓你深深地陷入困惑之中。有時候,你本能地想逃避她,內(nèi)心里又離不開她。你覺得她單純,可是你看不透她,你覺得她難以捉摸,可是她卻偏偏又有著簡單乖巧的一面。這樣的一種語言,是充滿魅力的魔法精靈,難道你就不想看清她的真面目,讀懂她,讓她幫助你創(chuàng)造出激動人心的神跡嗎?來吧,翻開這本書,你的愿望能夠?qū)崿F(xiàn)?! ∪绻闶且晃粍倓偨佑|到豐富多彩的Web世界,希望自己也能夠制作出那些美麗多彩的頁面的人,那么請相信我,這本書是為你準備的,通過閱讀它,能夠使你具備創(chuàng)建和駕馭屬于你自己的Web國度的能力。 如果你是一位偶然地在瀏覽器頁面代碼中發(fā)現(xiàn)一小段包含在標記之間的小腳本,并且希望弄明白它的人,那么請相信我,這本書是為你準備的,如果你有耐心讀完它,你將能夠自由地讓你的意志在標記之間飛揚。 如果你是一位迷失在無數(shù)腳本和特效之間的旅行者,那么請相信我,這本書是為你準備的。來和我一起在Web的湖泊中暢游吧,我必將帶你離開迷宮和陷阱,讓你看到腳下的這個王國是多么的美好,你將成為一位英明的王,而不再是無助的迷路人。 如果你是一位飽受腳本困擾的程序員,那么請相信我,這本書是為你準備的,請和我一起打開纏繞在你心頭的枷鎖,你會發(fā)現(xiàn)你手中握著的是一把神奇的利刃,這把神兵將不再割傷你自己,而是被你支配,成為在Web世界里助你開拓疆土的神器?! ∪绻闶且晃辉谀_本泥潭中掙扎的項目經(jīng)理,那么請相信我,這本書也是為你準備的,我發(fā)誓我有能力帶你離開我自己曾經(jīng)掙扎過的地方,當你離開了陷阱,你將發(fā)現(xiàn)以前你無暇顧及的世界,原來是那么的美好?! ∷蟹_了這本書并喜愛著JavaScript的讀者們,愿腳本神力與你們同在! 關(guān)于版權(quán) 本書中的部分內(nèi)容來自于網(wǎng)絡上公開的文章,所有有出處的文字都盡量標注出原始的出處,包括原文作者、首發(fā)網(wǎng)址和譯者。引用為例子的代碼在盡可能的情況下得到作者本人的同意。如果對這部分內(nèi)容有任何疑義,請及時與作者聯(lián)系。 本書中的部分文字參考或者直接引用了《JavaScript權(quán)威指南》第四版,作者David Flanagan,譯者張銘澤等,O’REILLY授權(quán)機械工業(yè)出版社2006年9月出版。凡是明確引用此書內(nèi)容和參考此書內(nèi)容的部分,筆者也在書中盡量注明(正文中統(tǒng)一用【1】來表示),如果因為引用原文內(nèi)容而產(chǎn)生的任何問題,請及時與作者聯(lián)系?! 邢嚓P(guān)章節(jié)的表格(表 XX.AA)大多數(shù)來源于《JavaScript權(quán)威指南》和互聯(lián)網(wǎng),在正文里不再做一一說明,如果對此有任何疑義,請及時與作者聯(lián)系?! ≈轮x 雖然這幾年來我一直致力于推廣JavaScript技術(shù)和Web標準,但是如果離開了時時刻刻支持和鼓勵著我的朋友們,這樣一本涉及到JavaScript方方面面的書,以我個人微不足道的力量是不可能完成的。這本書的面市凝聚著無數(shù)關(guān)心我的朋友們的心血,他們中的一些人是我的同事,另一些人是我在無憂腳本(www.51js.com)結(jié)識的伙伴,還有許許多多通過網(wǎng)絡聯(lián)系的未曾謀面的朋友。他們的每一分鼓勵、每一個思想、和每一點意見都是我創(chuàng)作的靈感和力量的源泉,沒有他們,就永遠也不會有這樣一本出自我手的書,在此我要向他們表示由衷的感謝。 我在金蝶工作的同事在我寫這本書的時候,不但為我提出了各種建議,而且毫無怨言地分擔了我的工作,體貼地為我留出足夠的創(chuàng)作時間。在這里我要感謝jimi、張錦、小陸、阿日、建新、大琴、老丁、謝汀以及其他的和我共同奮斗的金蝶MOP團隊的兄弟姐妹,謝謝你們的努力工作,謝謝你們對我的默默支持?! ∥覄?chuàng)作這本書的大量靈感來源于我和無憂腳本以及CSDN論壇上的朋友們的交流。我們總是一起探討關(guān)于腳本的深入話題,有時候達成一致意見,也有時候產(chǎn)生分歧甚至激烈的爭執(zhí)。靈感的火花總是在思維碰撞中產(chǎn)生的,和你們的討論讓我學到了很多東西,也直接地決定了這本書的內(nèi)容組織和觀點形成。在此,我要感謝所有在無憂腳本和CSDN結(jié)識的JS高手們,感謝幻宇、寶玉、梅花雪、周愛民、萬常華、海浪、梅雪香、dron、stone、劉杰、biyuan、泣紅亭、winter和asfman以及其他所有和我一起討論共同進步的JSers們,謝謝你們?! ∥以?4年從學校里畢業(yè)的時候,還對JavaScript一無所知,我自學JavaScript使用的第一本教材就是David Flanagan的《JavaScript權(quán)威指南》,如果沒有這本出色的教材,我可能永遠也不會對JavaScript有今天這種程度的理解。本書的基礎(chǔ)部分的許多基本概念、觀點和結(jié)論,也和《JavaScript權(quán)威指南》保持一致。在此感謝David Flanagan、Brendan Eich和《JavaScript權(quán)威指南》,沒有你們的幫助,也許我現(xiàn)在還是一位JavaScript的門外漢?! ∵@是我寫的第一本技術(shù)類的書,在此之前,我完全沒有創(chuàng)作教程的經(jīng)驗,是我的編輯陳冰鼓勵我創(chuàng)作這本書。而且在我撰寫這本書的一年里,他耐心細致地閱讀了我每一章節(jié)的稿件,提出了許多意見和建議,并一次又一次地督促我改進稿件,直至最終完成。如果沒有陳冰的耐心指導和幫助,我永遠也寫不出這樣一本書。 Web技術(shù)的飛速發(fā)展使得JavaScript這門腳本語言日漸被人們所重視,Web標準化工作的推進,也使得JavaScript變得越來越完善和優(yōu)美,也變得越來越神奇。在這里我要感謝所有為Web技術(shù)發(fā)展做出貢獻的技術(shù)人員,沒有你們的努力,就沒有JavaScript生存和發(fā)展的土壤。感謝W3C和ECMA組織孜孜不倦地進行的標準化工作,如果沒有這些努力,JavaScript也許到今天仍然只是Web舞臺一個不起眼的角落里的小配角。 最后,我要感謝我親愛的父母,沒有你們對我的愛,今天的我就不可能擁有我喜歡的事業(yè),寫出我喜歡的書,我也要將我的這本書獻給你們。我永遠愛著你們?! 橇痢 ?008年1月10日
內(nèi)容概要
《JavaScript王者歸來》不僅是一本傳播知識的書,更是一本求道的書?!禞avaScript王者歸來》分為五個部分循序漸進地與讀者討論了JavaScript的方方面面,從簡單的語言基礎(chǔ)到豐富的實際應用再到深入剖析語言本質(zhì)的高級話題,字里行間包含著作者多年工作中對JavaScript實踐乃至程序設(shè)計思想的深入思考和總結(jié)?!禞avaScript王者歸來》揭開了JavaScript的面紗,繞過誤解和虛幻的表象,引領(lǐng)你探索程序王國的奧妙。它既是一本為初學者準備的入門級教程,又是一本探尋程序設(shè)計思想本源的“魔法典籍”,也是一本W(wǎng)eb開發(fā)工程師們需要的案頭參考書?!禞avaScript王者歸來》是你進入腳本王國的一把鑰匙,引導你領(lǐng)略腳本魔法的神奇魅力。它還是一本著眼于未來改變互聯(lián)網(wǎng)的啟蒙讀物,在它的引領(lǐng)下,你將在互聯(lián)網(wǎng)的世界里獲得你所希望得到的知識、智慧、成就和快樂。
作者簡介
吳亮,(網(wǎng)名月影),早年曾在微軟亞洲研究院做過訪問學生、在金蝶軟件有限公司先后擔任過核心開發(fā)工程師、設(shè)計師和項目經(jīng)理,現(xiàn)任百度電子商務事業(yè)部Web開發(fā)項目經(jīng)理。多年來致力于JavaScript技術(shù)和Web標準的推廣,活躍于國內(nèi)極有影響力的JavaScript專業(yè)網(wǎng)站——無憂腳本(www.51js.com),并任JavaScript版的版主。平時熱愛文學、寫作和圍棋。
書籍目錄
第一部分 概論第1章 從零開始1.1 為什么選擇JavaScript?1.1.1 用戶的偏好--B/S模式1.1.2 在什么情況下用JavaScript1.1.3 對JavaScript的一些誤解1.1.3.1 JavaScript和Java的關(guān)系1.1.3.2 披著C外衣的Lisp1.1.3.3 關(guān)于JavaScript的思維定勢1.1.3.4 JavaScript是為業(yè)余愛好者設(shè)計的?1.1.3.5 JavaScript是面向?qū)ο蟮膯?.1.3.6 其他誤解1.1.4 警惕!腳本誘惑1.1.5 隱藏在簡單表象下的復雜度1.1.6 令人迷惑的選擇--錦上添花還是雪中送炭1.1.7 回到問題上來1.2 JavaScript的應用范圍1.2.1 客戶端的JavaScript1.2.2 服務器端的JavaScript1.2.3 其他環(huán)境中的JavaScript1.3 JavaScript的版本1.3.1 瀏覽器中的JavaScript版本1.3.2 其他版本1.4 一些值得留意的特性1.4.1 小把戲--神奇的魔法代碼1.4.2 為客戶端服務--經(jīng)典Hello World!的另一種JavaScript實現(xiàn)1.4.3 數(shù)據(jù)交互--JavaScript的一項強大功能1.4.4 JavaScript表面上的禁忌及如何突破這些禁忌1.5 安全性和執(zhí)行效率1.5.1 數(shù)據(jù)安全--永遠的敏感話題1.5.2 實戰(zhàn)!攻擊與防范1.5.3 不容馬虎--時刻關(guān)注性能1.6 一個例子--JavaScript編寫的計算器1.6.1 從需求分析開始--什么是計算器?1.6.2 系統(tǒng)設(shè)計--如何實現(xiàn)計算器?1.6.3 系統(tǒng)實現(xiàn)--計算器的最終實現(xiàn)1.6.4 持續(xù)改進--迭代的軟件開發(fā)過程1.7 學習和使用JavaScript的幾點建議1.7.1 像程序員一樣地思考--程序員的四個境界1.7.2 吝惜你的代碼1.7.3 學會在環(huán)境中調(diào)試1.7.4 警惕那些小缺陷1.7.5 思考先于實踐--不要輕易動手寫代碼1.7.6 時刻回頭--圣賢也無法完全預知未來1.8 關(guān)于本書的其余部分第2章 瀏覽器中的JavaScript2.1 嵌入網(wǎng)頁的可執(zhí)行內(nèi)容2.1.1 在什么地方裝載JavaScript代碼2.1.2 關(guān)于代碼的Script標簽2.1.3 我的代碼什么時候被執(zhí)行--不同執(zhí)行期的JavaScript代碼2.1.4 拿來主義--引入外部的JavaScript文件2.2 賞心悅目的特效2.2.1 生命在于運動--DHTML的效果2.2.2 換一種風格--CSS的力量2.2.3 用JavaScript操作DOM--一個可拖動窗口的例子2.3 使用JavaScript來與用戶交互2.3.1 創(chuàng)建一個彈出式幫助和進度條2.3.2 填錯了哦2.4 繞開腳本陷阱2.4.1 現(xiàn)實并不總是完美的2.4.2 不能完全相信你所見到的2.5 總結(jié)第3章 開發(fā)環(huán)境和調(diào)試方法3.1 我能用什么來編寫腳本--適合編寫JavaScript的文本編輯器3.2 來自瀏覽器的支持3.2.1 主流瀏覽器3.2.2 非主流瀏覽器3.3 集成開發(fā)環(huán)境3.3.1 什么是集成開發(fā)環(huán)境3.3.2 我需要集成開發(fā)環(huán)境嗎3.3.3 適合JavaScript的集成開發(fā)環(huán)境3.4 調(diào)試工具--提升開發(fā)效率的利器3.4.1 什么是調(diào)試3.4.2 原始的調(diào)試方法--利用輸出語句、“反射”機制和調(diào)試對象來進行調(diào)試3.4.3 適合JavaScript的調(diào)試工具3.5 定位代碼和調(diào)用堆棧3.5.1 Step by Step--單步和斷點3.5.2 監(jiān)視內(nèi)存3.5.3 追蹤問題的源頭--查看調(diào)用堆棧3.5.4 遇到麻煩了--為什么我跟蹤不到代碼3.6 瀏覽器捕獲異常3.6.1 異常處理機制--一個try/catch/finally模式的例子3.6.2 異常的種類3.6.3 應該在什么時候“吃掉”異常3.7 總結(jié)第二部分 JavaScript核心第4章 語言結(jié)構(gòu)4.1 JavaScript的基本文法4.1.1 字符集4.1.2 大小寫敏感4.1.3 分隔符4.1.4 詞、句子和段落4.1.5 分號4.1.6 標記4.1.7 注釋4.1.8 保留字4.2 常量和變量4.2.1 常量和變量4.2.2 變量的標識符4.2.3 變量的類型4.2.4 變量的聲明4.2.5 變量的作用域4.3 表達式和運算符4.3.1 表達式4.3.2 運算符概述4.3.3 算術(shù)運算符4.3.4 關(guān)系運算符4.3.5 邏輯運算符4.3.6 位運算符4.3.7 賦值運算符4.3.8 其他運算符4.3.8.1 條件運算符4.3.8.2 逗號運算符4.3.8.3 對象運算符4.3.8.4 類型運算符4.3.8.5 void運算符4.3.8.6 函數(shù)調(diào)用運算符4.4 控制語句4.4.1 表達式語句4.4.2 語句塊4.4.3 條件語句4.4.4 循環(huán)語句4.4.5 跳轉(zhuǎn)語句4.4.6 異常處理語句4.4.7 其他語句4.4.7.1 var語句4.4.7.2 function語句4.4.7.3 with語句4.4.7.4 空語句4.5 總結(jié)第5章 數(shù)據(jù)類型5.1 基本數(shù)據(jù)類型5.1.1 數(shù)值5.1.2 字符串--一個字符串相關(guān)操作的例子5.1.3 布爾型5.2 數(shù)組和對象5.2.1 數(shù)組5.2.2 對象--一個構(gòu)造函數(shù)的例子5.3 函數(shù)類型--一個函數(shù)和閉包的例子5.4 神奇的null和undefined5.4.1 null5.4.2 undefined--獨一無二的類型5.5 正則表達式5.5.1 正則表達式常量5.5.2 正則表達式對象5.6 值類型和引用類型5.6.1 什么是值和值的引用5.6.2 使用值和使用引用5.6.3 值與引用的相互轉(zhuǎn)換:裝箱和拆箱5.7 類型識別與類型轉(zhuǎn)換5.7.1 運行時類型識別--兩個運行的類型識別的例子5.7.2 類型的自動轉(zhuǎn)換及其例子5.7.3 強制類型轉(zhuǎn)換及其例子5.7.4 高級用法--一個自定義類型轉(zhuǎn)換的例子5.8 警惕數(shù)值陷阱5.8.1 困惑--浮點數(shù)的精度問題5.8.2 誤差的修正及其例子5.9 總結(jié)第6章 函數(shù)6.1 函數(shù)定義和函數(shù)調(diào)用6.1.1 函數(shù)的定義6.1.1.1 聲明式函數(shù)定義與函數(shù)表達式及其例子6.1.1.2 JavaScript函數(shù)的奧妙——魔法代碼6.1.2 函數(shù)的調(diào)用6.2 函數(shù)的參數(shù)6.2.1 形參與實參6.2.2 Arguments對象6.2.2.1 一個使用Arguments對象檢測形參的例子6.2.2.2 一個使用Arguments對象接收任意個數(shù)參數(shù)的例子6.2.2.3 一個使用Arguments對象模擬函數(shù)重載的例子6.2.3 參數(shù)類型匹配--一個利用arguments實現(xiàn)函數(shù)重載機制的例子6.3 函數(shù)的調(diào)用者和所有者6.3.1 函數(shù)的調(diào)用者6.3.2 函數(shù)的所有者--一個為函數(shù)指定所有者的例子6.3.3 動態(tài)調(diào)用--外來的所有者6.4 函數(shù)常量和閉包6.4.1 匿名的函數(shù)6.4.2 函數(shù)引用6.4.3 函數(shù)參數(shù)和函數(shù)返回值及其例子6.4.4 高級用法--閉包作為局部域與延遲求值6.5 高級抽象--Function類型和函數(shù)模版6.5.1 動態(tài)創(chuàng)建函數(shù)--一個利用Function實現(xiàn)Lambda算子的例子6.5.2 模式--函數(shù)工廠及其實例6.6 總結(jié)第7章 對象7.1 什么是對象7.2 對象的屬性和方法7.2.1 對象的內(nèi)置屬性7.2.2 為對象添加和刪除屬性7.2.3 反射機制--枚舉對象屬性7.3 對象的構(gòu)造7.3.1 構(gòu)造函數(shù)--一個雙精度浮點數(shù)封裝類的例子7.3.2 缺省構(gòu)造和拷貝構(gòu)造7.3.3 對象常量7.4 對象的銷毀和存儲單元的回收7.5 JavaScript的內(nèi)置對象7.5.1 Math對象7.5.2 Date對象--創(chuàng)建一個簡單的日歷7.5.3 Error對象7.5.4 其他內(nèi)置對象7.5.5 特殊的對象--全局對象與調(diào)用對象7.6 總結(jié)第8章 集合8.1 數(shù)組和數(shù)組元素8.1.1 數(shù)組的構(gòu)造8.1.2 數(shù)組常量8.1.3 數(shù)組元素8.2 數(shù)組對象和方法8.2.1 查找元素8.2.2 添加和刪除元素8.2.3 集合操作及其范例8.2.3.1 join()方法8.2.3.2 reverse()方法8.2.3.3 sort()方法8.2.3.4 concat()方法8.2.3.5 slice()方法8.2.3.6 splice()方法8.2.3.7 toSgring()方法和toLocaleString()方法8.3 哈希表8.3.1 什么是哈希表8.3.2 哈希表的構(gòu)造8.3.3 實現(xiàn)一個簡單的HashTable類型8.4 高級用法--集合操作和閉包8.5 總結(jié)第9章 字符串9.1 字符串的構(gòu)造9.1.1 字符串常量9.1.2 轉(zhuǎn)義序列9.1.3 字符串構(gòu)造函數(shù)9.2 字符串的使用9.2.1 比較字符串9.2.2 抽取和檢索子串9.2.3 連接拆分字符串9.2.4 字符串的模式匹配--一個字符串格式校驗的例子9.2.5 其他方法9.3 字符串與字符數(shù)組9.4 字符串與文本處理--JavaScript棋譜閱讀器(一)9.4.1 需求分析--什么是棋譜和棋譜閱讀器9.4.2 系統(tǒng)設(shè)計--棋譜和棋盤數(shù)據(jù)的字符串描述9.4.3 系統(tǒng)實現(xiàn)--解析和處理棋譜9.4.4 完整的棋譜閱讀器9.5 總結(jié)第10章 正則表達式10.1 什么是正則表達式10.1.1 正則表達式的概念10.1.2 JavaScript中的正則表達式10.2 正則表達式的規(guī)則10.2.1 直接量字符10.2.2 字符類和布爾操作10.2.3 重復10.2.4 選擇、分組和引用10.2.5 指定匹配的位置10.2.6 標志——高級模式匹配的規(guī)則10.3 模式匹配10.3.1 用于模式匹配的String方法及其例子10.3.2 用于模式匹配的RegExp方法10.3.2.1 一個使用exec()方法從身份證號碼獲取生日的例子10.3.2.2 一個使用test()方法遍歷字符串的例子10.4 關(guān)于正則表達式包裝對象10.4.1 RegExp對象——利用正則表達式實現(xiàn)全文檢索10.4.2 RegExp的實例屬性10.5 強大的正則表達式10.5.1 分析正則表達式的局部10.5.2 一個例子--強大的在線編輯器10.5.3 構(gòu)造新的文法--一個在JSVM中實現(xiàn)JSVM2解析器的例子10.6 高級用法10.7 用正則表達式處理文本10.7.1 創(chuàng)建一個計價公式編輯器10.7.1.1 需求分析--什么是計價公式編輯器10.7.1.2 系統(tǒng)實現(xiàn)--計價公式編輯器的實現(xiàn)10.7.2 創(chuàng)建一個同步滾動歌詞播放器10.7.2.1 需求分析--什么是同步滾動歌詞播放器10.7.2.2 系統(tǒng)設(shè)計與實現(xiàn)--處理LRC歌詞10.8 總結(jié)第三部分 瀏覽器與DOM第11章 瀏覽器對象11.1 Window對象--最基本的瀏覽器對象11.1.1 Window對象概覽11.1.2 Window對象的生命周期11.1.3 Window對象的屬性和方法11.1.4 一個多窗口應用的例子11.2 Document對象--瀏覽器窗口文檔內(nèi)容的代表11.2.1 Document對象概覽11.2.2 動態(tài)生成的文檔11.2.3 Document對象的基本信息11.2.4 Document對象的外觀屬性11.2.5 Document子對象接口11.2.5.1 一個遍歷Anchors對象的例子11.2.5.2 一個顛倒圖片的例子11.3 對話框和狀態(tài)欄11.3.1 創(chuàng)建一個簡單對話框11.3.2 其他類型的對話框11.3.2.1 模擬對話框--創(chuàng)建一個窗口對話框及一個對話框阻塞進行的例子11.3.2.2 showModalDialog和showModelessDialog--非W3C或ECMAScrip標準11.3.3 狀態(tài)欄11.4 框架--上層的Window對象11.4.1 多框架應用11.4.2 框架之間的關(guān)系11.4.3 框架的命名11.4.4 子框架中的JavaScript11.4.5 框架的應用--多頁簽顯示11.4.5.1 什么是頁簽11.4.5.2 頁簽的實現(xiàn)--創(chuàng)建一個包含頁簽的頁面11.5 表單和表單對象11.5.1 Form對象及其范例11.5.2 定義表單元素11.5.3 客戶端表單校驗及其例子11.5.4 創(chuàng)建一款通用的客戶端表單校驗組件11.6 其他內(nèi)置對象11.6.1 Navigator對象--瀏覽器總體信息的代表11.6.2 Screen對象--提供顯示器分辨率和可用顏色數(shù)量信息11.6.3 Location對象--當前窗口中顯示文檔的URL的代表11.6.4 History對象--一個有趣的對象11.7 總結(jié)第12章 文檔對象模型12.1 什么是DOM12.1.1 把文檔表示為樹12.1.2 樹的節(jié)點12.1.3 DOM對象的通用屬性和方法12.1.4 HTML結(jié)構(gòu)和DOM對象的關(guān)系--用JavaScript通過DOM來操作HTML文檔12.2 DOM與瀏覽器實現(xiàn)12.2.1 關(guān)于DOM HTML API12.2.2 DOM的級別和特性12.2.3 DOM的一致性12.2.4 差異性--瀏覽器的DOM方言12.3 一組“盒子”--DOM元素12.3.1 嵌套的“盒子”12.3.2 “盒子”和“盒子”內(nèi)容的分類12.4 創(chuàng)建和刪除節(jié)點12.4.1 構(gòu)造全新的節(jié)點12.4.2 平面展開--通過文檔元素直接創(chuàng)建12.4.3 回收空間--刪除不用的節(jié)點12.5 訪問和操縱DOM節(jié)點12.5.1 打開每一個盒子--遍歷節(jié)點12.5.2 弄清層級關(guān)系--父子與兄弟12.5.3 如何搜索特定節(jié)點12.5.4 克隆節(jié)點--一個使用cloneNode()復制表格的例子12.5.5 移動節(jié)點及其范例12.5.6 關(guān)于添加新行和排序的小技巧12.6 讀寫數(shù)據(jù)--添加、修改和刪除屬性12.7 外觀與行為12.7.1 DOM樣式屬性12.7.2 控制DOM元素的顯示與隱藏12.7.3 改變顏色和大小--一個簡單有趣的例子12.7.4 改變位置--創(chuàng)建一個繞圓圈旋轉(zhuǎn)的文字12.7.5 編輯控制及其范例12.7.6 改變樣式及其范例12.7.7 改變行為12.8 XML DOM12.8.1 什么是XML DOM12.8.2 如何使用XML DOM--一個利用XML實現(xiàn)多級關(guān)聯(lián)下拉選擇框的例子12.9 總結(jié)第13章 事件處理13.1 什么是事件13.1.1 消息與事件響應13.1.2 瀏覽器的事件驅(qū)動機制13.2 基本事件處理13.2.1 事件和事件類型13.2.2 事件的綁定13.2.3 直接調(diào)用事件處理函數(shù)13.2.4 事件處理函數(shù)的返回值13.2.5 帶參數(shù)的事件響應及其例子13.2.6 “this”關(guān)鍵字13.3 標準事件模型13.3.1 起泡和捕捉--瀏覽器的事件傳播13.3.2 事件處理函數(shù)的注冊13.3.3 把對象注冊為事件處理程序13.3.4 事件模塊和事件類型13.3.5 關(guān)于Event接口13.3.5.1 Event接口的屬性和方法13.3.5.2 UIEvent接口的屬性13.3.5.3 MouseEvent接口的屬性13.3.5.4 MutationEvent接口13.3.6 混合事件模型13.3.7 合成事件13.4 瀏覽器的事件處理模型實現(xiàn)13.4.1 Internet Explorer事件模型13.4.1.1 關(guān)于IE事件注冊13.4.1.2 IE Event對象的屬性13.4.1.3 IE中的事件起泡13.4.2 Netscape 4事件模型13.4.2.1 Netscape 4中的事件捕捉及其范例13.4.2.2 Netscape 4 Event對象的屬性13.5 回調(diào)與用戶自定義事件13.5.1 事件處理模式--一個實現(xiàn)簡單事件處理模式的例子13.5.2 用戶事件接口的定義13.5.3 事件代理和事件注冊--一個實現(xiàn)標準事件接口的例子13.5.4 標準模式--事件分派和接收13.6 一個例子--增強數(shù)據(jù)表格13.6.1 什么是增強數(shù)據(jù)表格13.6.2 一個采用兩重table嵌套方式固定表頭的例子13.6.3 可變列寬的實現(xiàn)13.6.4 標記行--呈現(xiàn)有別于其他行的背景色13.6.5 小技巧--將代碼添加到樣式表13.7 總結(jié)第14章 級聯(lián)樣式表14.1 什么是級聯(lián)樣式表14.1.1 CSS樣式和樣式表14.1.2 CSS的標準化14.1.3 瀏覽器支持的CSS14.2 JavaScript與CSS14.2.1 CSS和DOM的關(guān)系14.2.2 CSS和IE的關(guān)系14.2.3 瀏覽器的CSS兼容性14.3 控制CSS改變頁面風格14.3.1 實現(xiàn)結(jié)構(gòu)與表現(xiàn)的分離及其范例14.3.2 使用JwaScript和CSS實現(xiàn)頁面多種風格的實時替換14.4 總結(jié)第15章 數(shù)據(jù)存儲的腳本化15.1 什么是cookie15.1.1 瀏覽器和客戶端cookie15.1.2 cookie的屬性15.2 cookie的客戶端存取15.2.1 cookie的存儲15.2.2 cookie的讀取15.3 cookie的限制15.4 cookie示例--讓問候更加溫暖15.5 cookie對象的封裝15.6 什么是userData15.6.1 瀏覽器和客戶端userData15.6.2 userData的聲明15.6.3 userData的屬性和方法15.7 userData的客戶端存取15.7.1 userData的存儲和讀取15.7.2 userData的安全性15.8 userData的限制15.9 userData與cookie的對比15.10 userData示例--一個利用userData實現(xiàn)客戶端保存表單數(shù)據(jù)的例子15.11 總結(jié)第四部分 數(shù)據(jù)交互第16章 同步和異步16.1 什么是同步和異步16.2 超時設(shè)定和時間間隔16.3 定時器使用--偵聽與攔截16.3.1 標準模式--監(jiān)視器及其范例16.3.2 使用定時器時應當注意的問題16.4 一個例子--漂亮的Web時鐘16.4.1 什么是Web時鐘?16.4.2 最簡單的Web時鐘16.4.3 Web時鐘的設(shè)計16.4.4 完整的Web時鐘源代碼16.5 總結(jié)第17章 XML DOM和XML HTTP17.1 什么是XML DOM對象17.1.1 XML DOM簡介17.1.2 瀏覽器支持的XML DOM接口17.1.2.1 XML DOM標準接口17.1.2.2 IE的XML DOM組件17.1.2.3 操作XML文檔--一個使用MSXML操作XML文檔的例子17.2 XML DOM的版本兼容性--XML DOM的跨瀏覽器應用17.3 XML DOM的錯誤處理17.3.1 處理錯誤信息的ParseError對象17.3.2 包含錯誤信息的文檔17.4 XML DOM操作XML文檔17.4.1 訪問節(jié)點17.4.2 創(chuàng)建新節(jié)點17.4.3 移動和修改節(jié)點及其范例17.4.4 讀寫節(jié)點屬性和讀寫數(shù)據(jù)17.4.5 保存文檔17.5 一個例子--JavaScript棋譜閱讀器(二)17.5.1 用XML描述棋譜17.5.2 將XML棋譜轉(zhuǎn)換為SGF棋譜17.6 什么是XML HTTP對象17.6.1 XML HTTP對象簡介17.6.2 瀏覽器支持的XML HTTP對象17.7 通過XML HTTP發(fā)送請求17.7.1 建立連接17.7.2 發(fā)送請求17.8 讀取和設(shè)定HTTP頭17.8.1 什么是HTTP頭17.8.2 讀取和設(shè)定HTTP頭17.9 服務器應答17.9.1 同步和異步應答及其例子17.9.2 包含應答文本內(nèi)容的ResponseText 和ResponseXML17.10 總結(jié)第18章 Ajax簡介18.1 什么是Ajax18.1.1 Ajax并不神秘18.1.2 Ajax的應用場景18.1.3 Ajax的競爭對手--其他替代技術(shù)18.2 Ajax初探--我的第一個Ajax程序18.2.1 從常規(guī)應用開始--一個簡單的實時聊天室18.2.2 討厭的頁面刷新18.2.3 無刷新解決方案--改進的聊天室18.2.4 異步工作--遲滯感的解決方案18.3 Ajax原理剖析18.3.1 XML HTTP實時通信及一個簡單封裝了AjaxProxy對象的例子18.3.2 數(shù)據(jù)動態(tài)顯示--Ajax改善交互體驗的重要特點18.3.3 發(fā)揮XML的能力18.3.4 用JavaScript綁定一切18.3.5 應用背后的標準18.4 Ajax范例--實時聊天工具18.4.1 什么是實時聊天工具18.4.2 需求分析--實時聊天功能的實現(xiàn)要點18.4.3 系統(tǒng)實現(xiàn)--實時聊天功能的實現(xiàn)18.4.4 小結(jié)18.5 總結(jié)第19章 標準和兼容性19.1 標準化組織19.1.1 W3C和DOM標準19.1.2 ECMA和JavaScript標準19.1.3 互聯(lián)網(wǎng)標準19.2 平臺和瀏覽器的兼容性19.2.1 最小公分母法19.2.2 防御性編碼19.2.3 客戶端探測器19.2.4 特性檢測19.2.5 實現(xiàn)標準19.2.6 適度停止運行19.3 語言版本的兼容性19.3.1 language屬性19.3.2 版本測試19.4 如何實現(xiàn)跨瀏覽器應用19.4.1 取舍--劃定支持范圍19.4.2 基礎(chǔ)模塊設(shè)計--獨立兼容性檢測19.4.3 劃分運行級別19.4.4 給出正確的信息--不要讓你的代碼保持沉默19.4.5 充分的應用測試--“兼容性魔鬼”總會趁你不注意時“踢你的狗”19.4.6 靠近標準和就近原則 19.5 展望未來19.6 總結(jié)第20章 信息安全20.1 用戶的隱私信息20.2 禁止和受限制的操作20.2.1 受限制的屬性20.2.2 受限制的操作20.2.3 腳本安全級別20.2.4 腳本調(diào)試20.3 警惕幕后的攻擊者20.3.1 攻擊的手段20.3.2 隱匿的數(shù)據(jù)流20.3.3 頁面?zhèn)窝b20.3.4 發(fā)現(xiàn)蛛絲馬跡20.3.5 防范的手段20.3.5.1 傳輸數(shù)據(jù)的加密20.3.5.2 對用戶隱藏源代碼20.4 同源策略20.4.1 什么是同源策略20.4.2 同源策略的利弊20.4.3 突破同源策略20.5 安全區(qū)和簽名腳本20.5.1 可配置的安全策略方案20.5.2 Internet Explorer的安全區(qū)20.5.3 Netscape的簽名腳本20.6 代碼本身的安全--加密和混淆20.6.1 為什么要加密和混淆20.6.2 客戶端的加密技術(shù)及其例子20.6.3 代碼混淆原理20.6.4 JavaScript代碼混淆工具--一個代碼混淆算法的例子20.6.5 加密和混淆的結(jié)合使用20.7 總結(jié)第五部分 超越JavaScript第21章 面向?qū)ο?1.1 什么面向?qū)ο?1.1.1 類和對象21.1.2 公有和私有--屬性的封裝21.1.3 屬性和方法的類型21.2 神奇的prototype21.2.1 什么是prototype21.2.2 prototype的使用技巧21.2.2.1 給原型對象添加屬性21.2.2.2 帶默認值的Point對象21.2.2.3 delete操作將對象屬性恢復為默認值21.2.2.4 使用prototype巧設(shè)getter21.2.2.5 delete操作恢復原型屬性的可見性21.2.2.6 使用prototype創(chuàng)建大量副本21.2.2.7 使用prototype定義靜態(tài)方法21.2.3 prototype的實質(zhì)及其范例21.2.4 prototype的價值與局限性21.3 繼承與多態(tài)21.3.1 什么是繼承21.3.2 實現(xiàn)繼承的方法21.3.2.1 構(gòu)造繼承法及其例子21.3.2.2 原型繼承法及其例子21.3.2.3 實例繼承法及其例子21.3.2.4 拷貝繼承法及其例子21.3.2.5 幾種繼承法的比較21.3.2.6 混合繼承法及其例子21.3.3 單繼承與多重繼承21.3.4 接口及其實現(xiàn)21.3.5 多態(tài)及其實現(xiàn)21.4 構(gòu)造與析構(gòu)21.4.1 構(gòu)造函數(shù)21.4.2 多重構(gòu)造21.4.3 析構(gòu)21.5 疑團!“this”迷宮21.5.1 無數(shù)個陷阱--令人困擾的“this”謎團21.5.1.1 this代詞的運用21.5.1.2 this“陷阱”21.5.1.3 this代詞的異步問題21.5.2 偷梁換柱--不好的使用習慣21.5.3 異步調(diào)用--誰動了我的“this”21.5.4 揭開真相--JavaScript的“this”本質(zhì)21.5.5 困難不再--利用閉包修正“this”引用21.6 包裝對象21.6.1 區(qū)分值和引用21.6.2 裝箱與拆箱21.7 元類,類的模板21.7.1 什么是元類21.7.2 元類--構(gòu)造類的類21.7.3 為什么要用元類21.7.4 類工廠21.7.4.1 什么是類工廠21.7.4.2 為什么要建立類工廠21.8 誰才是造物主21.8.1 萬物適用的準則21.8.2 抽象的極致--一個抽象模式的例子21.8.3 返璞歸真,同源架構(gòu)21.9 總結(jié)第22章 閉包與函數(shù)式編程22.1 動態(tài)語言與閉包22.1.1 動態(tài)語言22.1.2 語法域和執(zhí)行域22.1.3 JavaScript的閉包--一個體現(xiàn)閉包本質(zhì)的例子22.2 閉包的特點與形式22.2.1 閉包的內(nèi)在--自治的領(lǐng)域22.2.2 訪問外部環(huán)境--一個用閉包改變外部環(huán)境的例子22.2.3 閉包和面向?qū)ο?2.2.4 其他形式的閉包22.3 不適合使用閉包的場合22.4 函數(shù)式編程22.4.1 什么是函數(shù)式編程22.4.1.1 函數(shù)是第一型22.4.1.2 閉包與函數(shù)式編程22.4.1.3 科里化(Currying)--一個有趣的概念22.4.1.4 延遲求值和延續(xù)--一個Fibonacci無窮數(shù)列的例子22.4.2 函數(shù)式編程、公式化與數(shù)學模型--一個拋物線方程的例子22.4.3 函數(shù)式編程的優(yōu)點22.4.3.1 單元測試方面的優(yōu)點22.4.3.2 調(diào)試方面的優(yōu)點22.4.3.3 并行方面的優(yōu)點22.4.3.4 代碼熱部署方面的優(yōu)點22.4.3.5 機器輔助的推理和優(yōu)化22.4.4 函數(shù)式編程的缺點22.4.4.1 閉包的副作用22.4.4.2 遞歸的形式22.4.4.3 延遲求值的副作用22.5 閉包與面向?qū)ο?2.5.1 私有域22.5.2 名字空間管理22.5.3 友元--一個非常有趣的概念22.6 Python風格的JavaScript代碼22.6.1 最簡約代碼22.6.2 輕量級重用22.6.2.1 JSON22.6.2.2 Functional22.6.2.3 迭代函數(shù)--一個Array迭代函數(shù)的例子22.6.3 模塊管理及其范例22.7 總結(jié)第23章 模塊級管理23.1 模塊化管理23.1.1 模塊化--代碼的重用23.1.2 JavaScript的模塊管理23.2 開放封閉原則和面向接口23.2.1 開放封閉原則23.2.2 面向接口23.3 名字空間管理23.3.1 什么是名字空間23.3.2 為什么要用名字空間23.3.3 JavaScript的名字空間管理23.4 調(diào)用依賴23.4.1 模塊的依賴性23.4.2 模塊依賴的管理23.5 用代碼管理代碼23.5.1 運行時環(huán)境的管理23.5.2 托管代碼--一個簡單的托管代碼“容器”23.5.3 一個完整的代碼管理容器23.6 總結(jié)第24章 動態(tài)構(gòu)建24.1 讓代碼去寫代碼24.1.1 腳本的動態(tài)解析24.1.2 語法擴展--創(chuàng)造屬于自己的語言24.2 “發(fā)明”語法24.2.1 正則表達式和語法解析及例子24.2.2 一個簡單的語法解析器實現(xiàn)24.2.2.1 什么是JavaScript 2.0語法24.2.2.2 JavaScript 2.0語法的部分關(guān)鍵特性實現(xiàn)24.3 實現(xiàn)自己的方言--LispScript24.3.1 從JavaScript到Lisp24.3.2 最初的工作--一般JavaScript代碼24.3.3 公理,表達式24.3.4 函數(shù)式編程的七條基本公設(shè)24.3.4.1 “引用”公設(shè)24.3.4.2 “原子”公設(shè)24.3.4.3 “等值”公設(shè)24.3.4.4 “表頭”公設(shè)24.3.4.5 “余表”公設(shè)24.3.4.6 “和表”公設(shè)24.3.4.7 “條件”公設(shè)24.3.5 函數(shù)文法24.3.6 使用LispScript定義新函數(shù)24.3.7 一個驚喜--_eval24.3.8 其他的擴展24.3.9 小結(jié)24.3.10 運行環(huán)境和代碼容器——看看“新發(fā)明”的LispScript的實際表現(xiàn)24.4 總結(jié)第25章 執(zhí)行效率25.1 為什么要討論執(zhí)行效率25.1.1 來自客戶的抱怨--JavaScript能有多慢25.1.2 代碼慢下來是誰的錯25.2 封閉的代價25.2.1 過度封裝的性能問題25.2.2 信息隱藏的利弊25.2.3 構(gòu)造對象的開銷25.3 盒子里的流火25.3.1 DOM的內(nèi)存開銷25.3.2 瀏覽器的內(nèi)存管理25.3.3 看清一個事實--內(nèi)存泄漏的存在25.3.4 注意--及時關(guān)閉你的“盒子”25.3.5 一些誤會的澄清25.3.5.1 腳本動態(tài)創(chuàng)建DOM導致內(nèi)存泄漏25.3.5.2 閉包導致內(nèi)存泄漏25.4 動態(tài)--魔鬼與天使25.4.1 動態(tài)解析的性能分析--一個動態(tài)特性的效率測試25.4.2 開發(fā)效率與執(zhí)行效率--永遠的困難選擇25.4.3 優(yōu)美與適用--學會經(jīng)受魔鬼的誘惑25.4.4 扮演客戶眼中的天使25.5 讓代碼輕舞飛揚25.5.1 簡單就是美--為代碼瘦身25.5.2 最完美的運用是不用25.5.3 高度抽象是為了簡化問題25.5.4 邏輯和表達同樣重要25.5.5 保持代碼的嚴謹25.5.6 漂亮的書寫風格--讓閱讀者心情愉快25.6 總結(jié)第26章 應用框架26.1 應用框架概覽26.1.1 什么是應用框架26.1.2 應用框架的組成部分26.1.2.1 類庫26.1.2.2 核心模塊26.1.2.3 環(huán)境配置26.1.2.4 使用手冊26.2 為什么要設(shè)計應用框架26.2.1 應用框架的適用范圍26.2.2 應用框架的利弊26.3 如何設(shè)計應用框架26.3.1 把握設(shè)計的目標26.3.2 應用框架的設(shè)計準則26.3.3 什么樣的應用框架才是成熟的應用框架26.3.4 應用框架的設(shè)計方法26.3.5 實戰(zhàn)!設(shè)計一個簡單的應用框架26.3.5.1 自描述26.3.5.2 基礎(chǔ)接口和語義型代碼26.3.5.3 核心對象的原型擴展26.3.5.4 簡單方法26.3.5.5 名字空間26.3.5.6 支持標準和跨瀏覽器26.3.5.7 事件模型--Silverna的事件模型26.3.5.8 應用模式26.3.5.9 提供Ajax組件26.3.5.10 內(nèi)存管理和其他26.4 框架的實際應用--在Silverna 2.0框架上開發(fā)的Widgets26.5 已存在的應用框架26.5.1 Prototype26.5.2 JQuery26.5.3 Dojo26.5.4 JSVM26.5.5 其他框架26.5.5.1 Bindows(成立于2003年)26.5.5.2 BackBase (成立于2003年)26.5.5.3 DOJO (開發(fā)中,成立于2004年9月)26.5.5.4 Open Rico(開發(fā)中,成立于2005年5月,基于早期的一個proprietary框架)26.5.5.5 qooxdoo (開發(fā)中,成立于2005年5月)26.5.5.6 Tibet (開發(fā)中,創(chuàng)建于2005年6月)26.5.5.7 AJFORM (創(chuàng)建于2005年6月)26.6 總結(jié)
章節(jié)摘錄
第一部分 概論 第1章 從零開始 程序設(shè)計之道無遠弗屆,御晨風而返?!芨ト稹ふ材肥俊 ≡谌祟惵臍v史長河里,很難找到第二個由簡單邏輯和抽象符號組合而成的,具有如此宏大信息量和豐富多彩內(nèi)涵的領(lǐng)域。從某種意義上說,當你翻開這本書的時候,你已經(jīng)踏入了一個任由你制定規(guī)則的未知世界。盡管你面對的僅僅是程序設(shè)計領(lǐng)域的冰山一角,但你將透過它,去領(lǐng)悟“道”的奧秘。在接下來的一段時間內(nèi),你會同我一起,掌握一種簡單而優(yōu)雅的神秘語言,學會如何將你的意志作用于它。這種語言中所蘊涵著的亙古之力,將為你開啟通往神秘世界的大門…… 1.1 為什么選擇JavaScript? 在一些人眼里,程序設(shè)計是一件神秘而浪漫的藝術(shù)工作,對他們來說,一旦選定某種編程語言,就會像一個忠貞的信徒一樣堅持用它來完成任何事情,然而我不是浪漫的藝匠,大多數(shù)人也都不是,很多時候我們學習一種新技術(shù)的唯一目的,只是為了把手中的事情做得更好。所以,。當你面對一項陌生的技術(shù)時,需要問的第一個問題往往是,我為什么選擇它,它對我來說,真的如我所想的那么重要嗎? 好,讓我們帶著問題開始?! ?.1.1 用戶的偏好——B/S模式 如果你堅持站在專業(yè)人員的角度,你就很難理解為什么B/S模式會那么受歡迎。如果你是一個資深的程序員,有時候你甚至會對那些B/S模式的東西有一點點反感。因為在你看來,瀏覽器、表單、DOM和其他一切與B/S沾邊的東西,大多是行為古怪而難以駕馭的。以你的經(jīng)驗,你會發(fā)現(xiàn)實現(xiàn)同樣的交互,用B/S來做通常會比用任何一種客戶端程序來做要困難得多。 如果你嘗試站在用戶的角度,你會發(fā)現(xiàn)為什么大多數(shù)最終用戶對B/S模式卻是如此的青睞。至少你不必去下載和安裝一個額外的程序到你的電腦上,不必為反復執(zhí)行安裝程序而困擾,不必整天被新的升級補丁打斷工作,不必理會注冊表、磁盤空間和一切對普通用戶來說有點頭疼的概念。如果你的工作地點不是固定的辦公室,你日常工作的PC也不是固定的一臺或者兩臺,那么,B/S的意義對你而言或許比想象的還要大。
媒體關(guān)注與評論
網(wǎng)友評論 emu:這是我多年來最期盼的一本JS的書。月影式的思考問題的方式和角度,總是讓人耳目一新?! ∥沂紫认胝f的是,作者不是個正常人來著。如果說像我這樣的正常人看一個問題,可以構(gòu)造出來一個數(shù)學模型,用一個函數(shù)來描述它fn(a,b,c,d...)={do sth.},在確定了n個參數(shù)后,問題就可以解決;那么到了月影手里,這個問題就變成了n維的問題空間,在只確定了部分條件的時候,就可以把這個n維空間在一個n-m維空間上做一個投影,轉(zhuǎn)化為另一個問題來看待(22.4節(jié)關(guān)于Currying的內(nèi)容,是我看過的最精彩的關(guān)于函數(shù)式編程的講解之一)?! ∫粋€腳本開發(fā)的問題,到了月影手里,也許實質(zhì)上是個濾波器的問題(見本書第一章),也許和波粒二像性有關(guān)(看月影以前的博文),也許實質(zhì)上是受到測不準原理的限制,也許和多維時空有密不可分的關(guān)系(都是某次和月影聊天時的話題),也許背后更有不可捉摸的“道”。月影看待問題的目光,總是這樣穿透表象,深入實質(zhì),并升華了問題本身,最后不但可以解決這一個問題,還可以解決相關(guān)的一系列問題,而且在解決問題的過程中,我們可能已經(jīng)解決了一系列的問題。這種月影式的風格,讓我們每每擊案叫絕。 這些年來,在JavaScript和DOM上面基于對象和函數(shù)式編程,網(wǎng)友們有過無數(shù)的嘗試和探索。但是這樣的探索之路是如此艱難,限于精力和能力,我們往往只能在得到零星小小的突破后便折返。我們也一直期待有達人可以穿透那些荊棘后把沿途的這些風景整理出來給后人分享,但是我們都知道這些風景只要看一眼已經(jīng)是如此之難,要什么樣的人,才能攀下這么多的高峰,并把它們一一系統(tǒng)的整理出來,呈現(xiàn)在大家面前? aoao:是不是看到書的文字過于華麗,是不是認為這不是技術(shù)人員寫的書?別急~華麗的語言并不與技術(shù)沖突,雖然很難想像得到有一本技術(shù)類的書讀起來可以用舒服來形容,很不巧,剛好這本書就是?! ∈遣皇钦也坏接袑iT介紹IE或Firefox兼容的一章,是不是正想放棄這本書?別急~這不是一本只專注解決特定問題的書,而是一本讓您看到JavaScript真相的書,當你了解了事實的真相時,問題自然迎刃而解?! h20156:許久不曾買書,嗷嗷和月影的書是我至今為止最為期待的兩本! 月影的這本書從開篇便用經(jīng)驗及趣味的腳本來吸引讀者,加上引人入勝的描述方式,讓人心癢不止,不睹不快! 再談談本書的設(shè)計,理論知識由淺到深的推進,實戰(zhàn)則從最簡單的應用直到當前最流行應用的深入分析,更值得一提的是,作者無時無刻不在引導著讀者朝著一個真正的程序員的方向去看待問題、思考問題、解決問題!可以說,本書是一本“老少皆宜”的JavaScript參考手冊!無論是新手還是已從事JavaScript工作多年的人,都可以從中獲得巨大的幫助! 希望本書能夠幫到更多的人,為Web開發(fā)帶來更多新突破! winter:這是一本求“道”的書。市面上關(guān)于JavaScript的書極多,且不乏精品,然而多執(zhí)著于“術(shù)”。若講JavaScript的語法,ECMA262標準的文檔已經(jīng)足夠,若講JavaScript與DOM應用,MSDN和W3C上的DOM參考也足夠?! avaScript是一門很有趣的語言,每取得一點更深入的理解,我便以為自己已經(jīng)徹悟。從最初的函數(shù)使用、面向?qū)ο?、原型繼承、函數(shù)對象到后來作用域鏈、functional、預解析、表達式解析機制、動態(tài)語言特性,每在此道路上前進一步,我都曾以為自己到達了頂峰。然而,事實上是,簡單的語法也能承載深刻的思想。巧妙的設(shè)計讓JavaScript成為一門兼有元類(meta-class)、類(class-based)、原型(prototype-based)三種面向?qū)ο筇匦院蚮unctional特性的動態(tài)語言?;貞浧饋?,對這樣的語言,說我已到達頂峰,是十分可笑的?! ∵@本書雖然已經(jīng)詳細到足可以代替參考手冊來查閱,但是,它是一門講思想的書。她將以優(yōu)美的文字和同樣優(yōu)美的代碼向你展示JavaScript的獨特魅力。讀過這本書,你不但能了解JavaScript,還會對整個編程的思想有一個新的認識,對于面向?qū)ο笳Z言、函數(shù)式語言、動態(tài)語言有全新的理解?! 牧硪粋€角度說,思想也并非作者所追求的“道”的終極。透漏一下,除了項目經(jīng)理/資深程序員外,作者還有很多身份:論壇版主、文學愛好者(寫的小說挺不錯、就是更新慢了點)、理論物理愛好者(是的,你將會看到他經(jīng)常把程序跟理論物理聯(lián)系起來)。讀過這本書,你也許能理解作者所追求的“道”?! 《嗾f無益,趕緊弄一本回家看吧?! eisang:正在看樣章,非常不錯。前面的建議確實很有意義,一個JS初學者首先要學的不是如何炫耀各種網(wǎng)頁特技,而是限制自己的欲望,保證只在必要的地方使用。 月影:那你覺得我寫這本書是為什么?為名?為利?還是什么? 這本書的市場定位和讀者群又是什么? 我和出版社的關(guān)系是什么?出版社為什么讓我寫這本書?他們對市場有過怎樣的研究?我作為簽約作者,又如何去對待這本書,如何在這之間取舍?如何同時對出版社和讀者負責? 很多事情不是由我能夠決定的,而你呢,要理解他人的付出和他人的難處…… 你知道一本600頁的書一年時間完成需要多少付出嗎? 你知道被人期待而恨自己能力不能再高一點的那種感覺嗎? 你知道自己累死累活寫出來的書,本以為能夠虛心接受心平氣和的指點和批評的時候突然受到劈頭蓋臉的一通亂棒時的那種感覺嗎? 不是我接受不了尖銳的批評,而是我希望評論時能夠稍微體諒一下我這個作者,平和地告訴我哪里不好,哪里要修改……而不是一上來就說我這本書是沒有價值的…… 你的技術(shù)和知識面我還是比較認可的,你的批評我也虛心接受,但你前面的一些過于尖銳的言辭我接受不了,抱歉了~ ?。ú邉澗庉孅c評:上面這段話是作者對一個在論壇上以極不友好的言詞和視角攻擊他的書的網(wǎng)友的回復,之所以把這段話放在這里,是因為從這段話中可以感受到作者對自己作品傾注的感情。令我感動的是這句話——“你知道被人期待而恨自己能力不能再高一點的那種感覺嗎?”) redcarpet:作者乃我的圍棋師傅,我相信他的文章就如他教的圍棋一樣,讓JS的學習者能進入神奇的JS之門?! ∠M鸍S迷們,能接近那傳說中的“神之一技”的境界?! €人覺得最有看點的部分:第五部分 第二十二章 看點:閉包與函數(shù)式編程?! ∵€有一點小小建議: 新學JS的朋友,可以試著按如下順序看:第一部分 第三章 開發(fā)環(huán)境和調(diào)試方法,第二部分 全部,第三、四部分,第五部分 最后看?! 偨佑|任何一門語言,碰到的問題就是編輯環(huán)境了,好多初學者自己摸索的話,會走不少的彎路。JS也不例外,先了解開發(fā)環(huán)境和調(diào)試方法,磨刀不誤砍柴功?! 倢WJS,不要立刻陷入具體使用環(huán)境中的問題,先把語言的核心、思想學好了,再看客戶端、服務端上的JS。第二部分學透了,就會為后續(xù)的章節(jié)打下了比較好的基礎(chǔ)?! oocoo:強烈支持一下,久聞月影大俠的名字,出書了我一定會買一本,光看目錄就夠吸引我了! greatghoul:這位兄臺可就不對了,入門書是很多,但真正優(yōu)秀的不是很多,現(xiàn)在比的就是誰的書能讓讀者更容易的入門,講得那么專業(yè),小孩子嚇都嚇死了,還入門個pp呀?! ≡掳嬖谡搲锩曇菜悴恍?,解決的問題也算不少,而且還有大公無私的精神(上面有所提及),大家都喜歡他(她)的生動的語言,讀他(她)的書就好像在論壇里面和他(她)交流一樣,在這樣具有親和力的環(huán)境中入門,是非常享受的?! ∵@位兄臺或許書讀的很多,但對入門書籍方面只是想當然,不是書寫得專業(yè)就行,像《Thinking in Java》就寫得很有親和力,但依然受很多所謂專業(yè)人士的抨擊,然而讀者喜歡。月版要致力于寫類似于Thinking in JavaScript的東西呀。 秦皇也愛JS:說實話,這本書非常好看,月影的寫作水平和文字功底是非常之高啊。像《JavaScript權(quán)威指南》,有時候看著看著就看不下去了,但這本書的樣章卻讓我看得興致盎然,不忍釋卷。里面竟然還穿插了我喜歡的《明朝那些事兒》的句子,呵呵,真是奇峰迭起。比起呆板嚴肅的譯版,我還是更喜歡這本。頂! 編程浪子:一本有思想的書,其價值已超出內(nèi)容本身,以前那些JS的書看著就乏味,教條式太嚴重?! ∵€沒看到書,不敢把作者評得那么好,不過我相信月影的實力,樣章就寫得不錯,可謂“得道中人”呀。 xpnew:月影老大出書了,我們一定要支持!確實很感動啊?! yhome:不適合你讀,但很適合我讀!沒人要你讀,綜合你的一些言論和表現(xiàn),得出的結(jié)論是你沒資格讀這書,因為你根本就不懂作者寫的是什么! (策劃編輯點評:在論壇上以極不友好的言詞和視角攻擊作者所寫的這本書的那個網(wǎng)友的言詞,激起了其他很多網(wǎng)友的反感,這是其中一個網(wǎng)友對那位攻擊者的回復。) 果蠅:其實我更希望月影把書寫成小說或散文的形式,有什么不可以的呢!我們需要的是生動有趣的語言和奇思妙想,也許不是很技術(shù),但可以給讀者以遐想、啟發(fā),可以開闊我們的思路,我想如果書能達到這個目的,那就是一本難得的好書了?! ∥蚁脒@也是無憂能如此吸引人的原因?! 】催^月版的一些帖子,對月版的書有更多的期待?! ∫字刑煸炎约旱奈恼陆o出版社看,主編退稿說你這個是散文,不是學術(shù)著作。 事實證明學術(shù)這些東西不只是在高高的象牙塔尖上,也證明一些人腦筋確實死得很,不必太在意?! ≡掠皯摳械綐s幸有這么多的關(guān)注,不管是好是壞,都是支持?! olidluck:你就放肆的寫吧,讓我們也放肆的看?! ≌娌宦斆鳎簜€人覺得好書在于對基礎(chǔ)講解的深刻,而不是用最新的技術(shù)來引誘你?! uchaofeng:在哪兒有買的,期待中…… monfs:快出呀,等不急了,這是一個歷史時刻! fuhao19830308:這書要出了可得通知一聲,看了樣章就有了看下去的欲望了! LeoZ:我也每天上來看一下是否有出版,可是每次都沒消息,我也繼續(xù)等。 samon127:什么時候出版啊,等了好久了:) ansonvili:什么時候出啊,等不急了?! reeren:看了樣章,很貼切,很易理解,期待書的發(fā)行! ravioli:每天以淚洗面的等啊等?! chnipj:等的好辛苦,月版主能說說具體的時間嗎?好想看呀。 ?。ú邉澗庉孅c評:本來我希望這本書在2008年的春節(jié)后就能出版,而實際上卻由于種種原因一直拖到了6月份這本書才面世。說聲抱歉,讀者們,讓你們久等了。)
編輯推薦
腳本神力與你同在 無憂版主月影力作?! 禞avaScript王者歸來》是一本尋求JavaScript解決之道的書?! 禞avaScript王者歸來》是一本探尋程序設(shè)計思想本源的“魔法典籍” 。 從簡單的語言基礎(chǔ)到豐富的實際應用再到語言本質(zhì)的深入剖析?! ∽掷镄虚g包含作者對JavaScript實踐乃至程序設(shè)計思想的深入思考和總結(jié) 腳本攻擊就在黎明發(fā)起。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載