JavaScript語言精髓與編程實踐

出版時間:2012-3  出版社:電子工業(yè)出版社  作者:周愛民  頁數(shù):456  
Tag標(biāo)簽:無  

內(nèi)容概要

  本書詳細(xì)講述JavaScript
作為一種混合式語言的各方面特性,包括過程式、面向?qū)ο?、函?shù)式和動態(tài)語言特性等,在動態(tài)函數(shù)式語言特性方面有著尤為細(xì)致的講述。本書的主要努力之一,就是分解出這些語言原子,并重現(xiàn)將它們混合在一起的過程與方法。通過從復(fù)雜性到單一語言特性的還原過程,讀者可了解到語言的本質(zhì),以及“層出不窮的語言特性”背后的真相。
  本書主要的著述目的是基于一種形式上簡單的語言來講述“語言的本質(zhì)及其應(yīng)用”。本書詳細(xì)講述了通過框架執(zhí)行過程來構(gòu)造一個JavaScript
擴(kuò)展框架的方法,并完整地講述了框架擴(kuò)展中各種設(shè)計取舍,因此可以作為研究計算機(jī)程序設(shè)計語言時的參考,用以展示現(xiàn)實系統(tǒng)如何實現(xiàn)經(jīng)典理論中的各種編程范型。

作者簡介

周愛民,(Aimingoo),國內(nèi)軟件開發(fā)界資深軟件工程師、架構(gòu)師,技術(shù)作家。有十余年的軟件開發(fā)、項目管理、團(tuán)隊建設(shè)的經(jīng)驗。著有《Delphi源代碼分析》、《大道至簡》和《JavaScript語言精髓與編程實踐》等專著?!?001年,主持完成的“極光數(shù)據(jù)處理倉庫中心系統(tǒng)”被河南省信息產(chǎn)業(yè)廳授予省高新技術(shù)產(chǎn)品二等獎?!?003年,被美國Borland公司授予“Borland Delphi產(chǎn)品專家”稱號?!?004年,出版《Delphi源代碼分析》,被譽為“Delphi領(lǐng)域精品著作”?!?005年,發(fā)布《大道至簡》電子版(第一版)。◆2006年,發(fā)起開源項目QomolangmaOpenProiect,探討語言系統(tǒng)基礎(chǔ)技術(shù)?!?007年3月,出版《大道至簡》(第二版)?!?008年3月,出版《JavaScript語言精髓與編程實踐》第一版。

書籍目錄

第1部分 語言基礎(chǔ)
 第1章 十年JavaScript
  1.1 網(wǎng)頁中的代碼
  1.1.1 新鮮的玩意兒
  1.1.2 第一段在網(wǎng)頁中的代碼
  1.1.3 最初的價值
  1.2 用JavaScript來寫瀏覽器上的應(yīng)用
  1.2.1 我要做一個聊天室
  1.2.2 Flash的一席之地
  1.2.3 RWC與RIA之爭
  1.3 沒有框架與庫的語言能怎樣發(fā)展呢
  1.3.1 做一個框架
  1.3.2 重寫框架的語言層
  1.3.3 富瀏覽器端開發(fā)與AJAX
  1.4 語言的進(jìn)化
  1.4.1 Qomo的重生
  1.4.2 QoBean是對語言的重新組織
  1.4.3 JavaScript作為一門語言的進(jìn)化
  1.5 為JavaScript正名
  1.5.1 JavaScript
  1.5.2 Core JavaScript
  1.5.3 SpiderMonkey JavaScript
  1.5.4 ECMAScript
  1.5.5 JScript
  1.5.6 總述
  1.6 JavaScript的應(yīng)用環(huán)境
  1.6.1 宿主環(huán)境
  1.6.2 外殼程序
  1.6.3 運行期環(huán)境
 第2章 JavaScript的語法
  2.1 語法綜述
  2.1.1 標(biāo)識符所綁定的語義
  2.1.2 識別語法錯誤與運行錯誤
  2.2 JavaScript的語法:變量聲明
  2.2.1 變量的數(shù)據(jù)類型
  2.2.1.1 基本數(shù)據(jù)類型
  2.2.1.2 值類型與引用類型
  2.2.2 變量聲明
  2.2.3 變量與直接量
  2.2.3.1 字符串直接量、轉(zhuǎn)義符
  2.2.3.2 數(shù)值直接量
  2.2.4 函數(shù)聲明
  2.3 JavaScript的語法:表達(dá)式運算
  2.3.1 一般表達(dá)式運算
  2.3.2 邏輯運算
  2.3.3 字符串運算
  2.3.4 比較運算
  2.3.4.1 等值檢測
  2.3.4.2 序列檢測
  2.3.5 賦值運算
  2.3.6 函數(shù)調(diào)用
  2.3.7 特殊作用的運算符
  2.3.8 運算優(yōu)先級
  2.4 JavaScript的語法:語句
  2.4.1 表達(dá)式語句
  2.4.1.1 一般表達(dá)式語句
  2.4.1.2 賦值語句與隱式的變量聲明
  2.4.1.3 (顯式的)變量聲明語句
  2.4.1.4 函數(shù)調(diào)用語句
  2.4.2 分支語句
  2.4.2.1 條件分支語句(if語句)
  2.4.2.2 多重分支語句(switch
  語句)
  2.4.3 循環(huán)語句
  2.4.4 流程控制:一般子句
  2.4.4.1 標(biāo)簽聲明
  2.4.4.2 break子句
  2.4.4.3 continue子句
  2.4.4.4 return子句
  2.4.5 流程控制:異常
  2.5 面向?qū)ο缶幊痰恼Z法概要
  2.5.1 對象直接量聲明與實例創(chuàng)建
  2.5.1.1 使用構(gòu)造器創(chuàng)建對象實例
  2.5.1.2 對象直接量聲明
  2.5.1.3 數(shù)組直接量聲明
  2.5.1.4 正則表達(dá)式直接量聲明
  2.5.1.5 【ES5】在對象直接量中使用屬性讀寫器
  2.5.1.6 討論:初始器與直接量的區(qū)別
  2.5.2 對象成員
  2.5.2.1 對象成員列舉、存取和刪除
  2.5.2.2 屬性存取與方法調(diào)用
  2.5.2.3 對象及其成員的檢查
  2.5.2.4 可列舉性
  2.5.3 默認(rèn)對象的指定
  2.6 【ES5】嚴(yán)格模式下的語法限制
  2.6.1 語法限制
  2.6.2 嚴(yán)格模式的范圍
  2.7 運算符的二義性
  2.7.1 加號“+”的二義性
  2.7.2 括號“( )”的二義性
  2.7.3 冒號“:”與標(biāo)簽的二義性
  2.7.4 大括號“{ }”的二義性
  2.7.5 逗號“,”的二義性
  2.7.6 方括號“[ ]”的二義性
第2部分 語言特性及基本應(yīng)用
 第3章 JavaScript的非函數(shù)式語言特性
  3.1 概述
  3.1.1 命令式語言與結(jié)構(gòu)化編程
  3.1.2 結(jié)構(gòu)化的疑難
  3.1.3 “面向?qū)ο笳Z言”是突破嗎
  3.1.4 更高層次的抽象:接口
  3.1.5 再論語言的分類
  3.1.6 JavaScript的語源
  3.2 基本語法的結(jié)構(gòu)化含義
  3.2.1 基本邏輯與代碼分塊
  3.2.2 模塊化的層次:語法作用域
  3.2.2.1 主要的語法作用域及其效果
  3.2.2.2 語法作用域之間的相關(guān)性
  3.2.3 執(zhí)行流程及其變更
  3.2.3.1 級別2:“break <label>”等語法
  3.2.3.2 級別3:return子句
  3.2.3.3 級別4:throw語句
  3.2.3.4 執(zhí)行流程變更的內(nèi)涵
  3.2.4 模塊化的效果:變量作用域
  3.2.4.1 級別1:表達(dá)式
  3.2.4.2 級別2:語句
  3.2.4.3 級別3:函數(shù)(局部)
  3.2.4.4 級別4:全局
  3.2.4.5 變量作用域中的次序問題
  3.2.4.6 變量作用域與變量的生存周期
  3.2.5 語句的副作用
  3.3 JavaScript中的原型繼承
  3.3.1 空對象(null)與空的對象
  3.3.2 原型繼承的基本性質(zhì)
  3.3.3 空的對象是所有對象的基礎(chǔ)
  3.3.4 構(gòu)造復(fù)制?寫時復(fù)制?還是讀遍歷?
  3.3.5 構(gòu)造過程:從函數(shù)到構(gòu)造器
  3.3.6 預(yù)定義屬性與方法
  3.3.7 原型鏈的維護(hù)
  3.3.7.1 兩個原型鏈
  3.3.7.2 constructor屬性的維護(hù)
  3.3.7.3 內(nèi)部原型鏈的作用
  3.3.7.4 【ES5】在SpiderMonkey與ES5中的原型鏈維護(hù)
  3.3.8 原型繼承的實質(zhì)
  3.3.8.1 原型修改
  3.3.8.2 原型繼承
  3.3.8.3 原型繼承的實質(zhì):從無到有
  3.3.8.4 如何理解“繼承來的成員”
  3.4 JavaScript的對象系統(tǒng)
  3.4.1 封裝
  3.4.2 多態(tài)
  3.4.3 事件
  3.4.4 類抄寫?或原型繼承?
  3.4.4.1 類抄寫
  3.4.4.2 原型繼承存在的問題
  3.4.4.3 如何選擇繼承的方式
  3.4.5 JavaScript中的對象(構(gòu)造器)
  3.4.6 不能通過繼承得到的效果
  3.5 【ES5】可定制的對象屬性
  3.5.1 屬性描述符
  3.5.1.1 (一般的)數(shù)據(jù)屬性描述符
  3.5.1.2 (帶讀寫器的)存取屬性描述符
  3.5.1.3 直接量形式的初始器是語法格式,而非描述符
  3.5.2 定制對象屬性
  3.5.2.1 屬性聲明以及獲取屬性描述符
  3.5.2.2 新的對象創(chuàng)建方法:Object.create()
  3.5.3 屬性狀態(tài)維護(hù)
  3.5.3.1 取屬性列表
  3.5.3.2 使用defineProperty來維護(hù)屬性的性質(zhì)
  3.5.3.3 對于繼承自原型的屬性,修改其值的效果
  3.5.3.4 重寫原型繼承來的屬性的描述符
 第4章 JavaScript的函數(shù)式語言特性
  4.1 概述
  4.1.1 從代碼風(fēng)格說起
  4.1.2 為什么常見的語言不贊同連續(xù)求值
  4.1.3 函數(shù)式語言的淵源
  4.2 函數(shù)式語言中的函數(shù)
  4.2.1 函數(shù)是運算元
  4.2.2 在函數(shù)內(nèi)保存數(shù)據(jù)
  4.2.3 函數(shù)內(nèi)的運算對函數(shù)外無副作用
  4.3 從運算式語言到函數(shù)式語言
  4.3.1 JavaScript中的幾種連續(xù)運算
  4.3.1.1 連續(xù)賦值
  4.3.1.2 三元表達(dá)式的連用
  4.3.1.3 一些運算連用
  4.3.1.4 函數(shù)與方法的調(diào)用
  4.3.2 運算式語言
  4.3.2.1 運算的實質(zhì)是值運算
  4.3.2.2 有趣的運算:在IE和J2EE中
  4.3.3 如何消滅掉語句
  4.3.3.1 通過表達(dá)式消滅分支語句
  4.3.3.2 通過函數(shù)遞歸消滅循環(huán)語句
  4.3.3.3 其他可以被消滅的語句
  4.4 函數(shù):對運算式語言的補充和組織
  4.4.1 函數(shù)是必要的補充
  4.4.2 函數(shù)是代碼的組織形式
  4.4.3 重新認(rèn)識“函數(shù)”
  4.4.3.1 “函數(shù)”==“l(fā)ambda”
  4.4.3.2 當(dāng)運算符等義于某個函數(shù)時
  4.4.4 JavaScript語言中的函數(shù)式編程
  4.5 JavaScript中的函數(shù)
  4.5.1 可變參數(shù)與值參數(shù)傳遞
  4.5.2 非惰性求值
  4.5.3 函數(shù)是第一型
  4.5.4 函數(shù)是一個值
  4.5.5 可遍歷的調(diào)用棧
  4.5.5.1 callee:我是誰
  4.5.5.2 caller:誰呼(叫)我
  4.6 閉包
  4.6.1 閉包與函數(shù)實例
  4.6.1.1 什么是閉包
  4.6.1.2 什么是函數(shù)實例與函數(shù)引用
  4.6.1.3 (在被調(diào)用時,)每個函數(shù)實例至少擁有一個閉包
  4.6.2 閉包與調(diào)用對象
  4.6.2.1 “調(diào)用對象”的局部變量維護(hù)規(guī)則
  4.6.2.2 “全局對象”的變量維護(hù)規(guī)則
  4.6.2.3 函數(shù)閉包與“調(diào)用對象”的生存周期
  4.6.3 閉包相關(guān)的一些特性
  4.6.3.1 引用與泄漏
  4.6.3.2 函數(shù)實例擁有多個閉包的情況
  4.6.3.3 語句或語句塊中的閉包問題
  4.6.3.4 閉包中的標(biāo)識符(變量)特例
  4.6.3.5 函數(shù)對象的閉包及其效果
  4.6.4 閉包與可見性
  4.6.4.1 函數(shù)閉包帶來的可見性效果
  4.6.4.2 對象閉包帶來的可見性效果
  4.6.4.3 匿名函數(shù)的閉包與可見性效果
  4.7 【ES5】嚴(yán)格模式與閉包
  4.7.1 嚴(yán)格模式下的執(zhí)行限制
  4.7.2 嚴(yán)格模式下的匿名函數(shù)遞歸問題
 第5章 JavaScript的動態(tài)語言特性
  5.1 概述
  5.1.1 動態(tài)數(shù)據(jù)類型的起源
  5.1.2 動態(tài)執(zhí)行系統(tǒng)的起源
  5.1.2.1 編譯系統(tǒng)、解釋系統(tǒng)與編碼
  5.1.2.2 動態(tài)執(zhí)行
  5.1.3 腳本系統(tǒng)的起源
  5.1.4 腳本只是一種表面的表現(xiàn)形式
  5.2 動態(tài)執(zhí)行
  5.2.1 動態(tài)執(zhí)行與閉包
  5.2.1.1 eval使用全局閉包
  5.2.1.2 eval使用當(dāng)前函數(shù)的閉包
  5.2.2 動態(tài)執(zhí)行過程中的語句、表達(dá)式與值
  5.2.3 奇特的、甚至是負(fù)面的影響
  5.3 動態(tài)方法調(diào)用(call、apply與bind)
  5.3.1 動態(tài)方法調(diào)用中指定this對象
  5.3.2 丟失的this引用
  5.3.3 棧的可見與修改
  5.3.4 兼容性:低版本中的call()與apply()
  5.3.5 【ES5】兼容性:ES5中的call()、apply()
  5.3.6 【ES5】bind()方法與函數(shù)的延遲調(diào)用
  5.4 重寫
  5.4.1 原型重寫
  5.4.2 構(gòu)造器重寫
  5.4.2.1 語法聲明與語句含義不一致的問題
  5.4.2.2 對象檢測的麻煩
  5.4.2.3 構(gòu)造器的原型(prototype屬性)不受重寫影響
  5.4.2.4 “內(nèi)部對象系統(tǒng)”不受影響
  5.4.2.5 讓用戶對象系統(tǒng)影響內(nèi)部對象系統(tǒng)
  5.4.2.6 構(gòu)造器重寫對直接量聲明的影響
  5.4.2.7 構(gòu)造綁定
  5.4.2.8 內(nèi)置構(gòu)造器重寫的概述
  5.4.3 對象成員的重寫
  5.4.3.1 成員重寫的檢測
  5.4.3.2 成員重寫的刪除
  5.4.4 宿主對重寫的限制
  5.4.5 引擎對重寫的限制
  5.4.5.1 this的重寫
  5.4.5.2 語句語法中的重寫
  5.4.5.3 結(jié)構(gòu)化異常處理中的重寫
  5.5 包裝類:面向?qū)ο蟮耐讌f(xié)
  5.5.1 顯式包裝元數(shù)據(jù)
  5.5.2 隱式包裝的過程與檢測方法
  5.5.3 包裝值類型數(shù)據(jù)的必要性與問題
  5.5.4 其他直接量與相應(yīng)的構(gòu)造器
  5.5.4.1 函數(shù)特例
  5.5.4.2 正則表達(dá)式特例
  5.6 關(guān)聯(lián)數(shù)組:對象與數(shù)組的動態(tài)特性
  5.6.1 關(guān)聯(lián)數(shù)組是對象系統(tǒng)的基礎(chǔ)
  5.6.2 用關(guān)聯(lián)數(shù)組實現(xiàn)的索引數(shù)組
  5.6.3 干凈的對象
  5.7 類型轉(zhuǎn)換
  5.7.1 宿主環(huán)境下的特殊類型系統(tǒng)
  5.7.2 值運算:類型轉(zhuǎn)換的基礎(chǔ)
  5.7.3 隱式轉(zhuǎn)換
  5.7.3.1 運算導(dǎo)致的類型轉(zhuǎn)換
  5.7.3.2 語句(語義)導(dǎo)致的類型轉(zhuǎn)換
  5.7.4 值類型之間的轉(zhuǎn)換
  5.7.4.1 undefined的轉(zhuǎn)換
  5.7.4.2 number的轉(zhuǎn)換
  5.7.4.3 boolean的轉(zhuǎn)換
  5.7.4.4 string的轉(zhuǎn)換
  5.7.4.5 值類型數(shù)據(jù)的顯式轉(zhuǎn)換
  5.7.5 從引用到值:深入探究valueOf()方法
  5.7.6 到字符串類型的顯式轉(zhuǎn)換
  5.7.6.1 重寫toString()方法
  5.7.6.2 從數(shù)值到字符串的顯式轉(zhuǎn)換
  5.7.6.3 其他類型的顯式轉(zhuǎn)換
  5.7.6.4 序列化
第3部分 編程實踐
 第6章 元語言:QoBean核心技術(shù)與實現(xiàn)
  6.1 QoBean語言層的基本特性
  6.1.1 QoBean語言層概要
  6.1.1.1 如何使用QoBean
  6.1.1.2 QoBean中的面向?qū)ο螅∣OP)
  6.1.1.3 QoBean中的接口(Interface)
  6.1.1.4 QoBean中的切面(Aspect)
  6.1.2 Qomo的體系結(jié)構(gòu)及其與QoBean的關(guān)系
  6.2 QoBean的元語言特性
  6.2.1 QoBean如何理解元語言
  6.2.2 算法與數(shù)據(jù)結(jié)構(gòu)
  6.2.2.1 引用類型與值類型的數(shù)據(jù)
  6.2.2.2 函數(shù)調(diào)用
  6.2.2.3 源起
  6.2.2.4 小結(jié)
  6.2.3 代碼組織形式
  6.2.3.1 塊,以及基于塊的編織
  6.2.3.2 更強的編織
  6.2.3.3 邏輯代碼塊:局部、全局,以及閉包
  6.2.3.4 邏輯的屬主
  6.2.4 對“如何組織對象”的補充
  6.2.4.1 原子,與原子聯(lián)結(jié)的友類、友函數(shù)
  6.2.4.2 對象唯一化
  6.2.5 綜述
  6.3 基于元語言實現(xiàn)的語言特性
  6.3.1 基于元語言的類繼承框架
  6.3.1.1 類注冊過程
  6.3.1.2 示例:實現(xiàn)MetaClass與MetaObject的約定
  6.3.1.3 完整的Qomo語法實現(xiàn)
  6.3.1.4 類類型樹的建立
  6.3.2 多投事件
  6.3.3 其他語言特性的實現(xiàn)
  6.4 基于元語言實現(xiàn)的DSL
  6.4.1 DSL的基本設(shè)計
  6.4.2 DSL的基本實現(xiàn)
  6.4.3 DSL的基本應(yīng)用
  6.4.4 一些修補
  6.4.5 基于嚴(yán)格模式的一些修補
 第7章 一般性的動態(tài)函數(shù)式
  語言技巧
  7.1 消除代碼的全局變量名占用
  7.2 一次性的構(gòu)造器
  7.3 對象充當(dāng)識別器
  7.4 識別new運算進(jìn)行的構(gòu)造器調(diào)用
  7.5 使用直接量及其包裝類快速調(diào)用對象方法
  7.6 三天前是星期幾
  7.7 使用對象的值含義來構(gòu)造復(fù)雜對象
  7.8 控制字符串替換過程的基本模式
  7.9 實現(xiàn)二叉樹
  7.10 將函數(shù)封裝為方法
  7.11 使用with語句來替代函數(shù)參數(shù)傳遞
  7.12 使用對象閉包來重置重寫
  7.13 構(gòu)造函數(shù)參數(shù)
  7.14 使用更復(fù)雜的表達(dá)式來消減if語句
  7.15 利用鉤子函數(shù)來擴(kuò)展功能
  7.16 安全的字符串
  附錄A 術(shù)語表
  附錄B 主要引擎的特性差異列表
  附錄C 附圖
  附錄D 參考書目
  附錄E 本書各版次主要修改

章節(jié)摘錄

版權(quán)頁:插圖:我最開始做的網(wǎng)頁只用于展示信息,是一個個單純的、靜態(tài)的網(wǎng)頁,并通過一些超鏈接連接起來。當(dāng)時網(wǎng)頁開發(fā)的環(huán)境并不好(像現(xiàn)在的Dreamweaver這類程序,那時只能是夢想),因此我只能用、記事本(notepad.exe)來寫HTML。當(dāng)時顯示這些htm文件的瀏覽器就是Netscape Navigator3。我很快就遇到了麻煩,因為P&J的朋友說希望讓瀏覽網(wǎng)頁的用戶們能做更多的事,例如搜索等操作。我笑著說:“如果在電子公告板上,寫段腳本就可以了;但在互聯(lián)網(wǎng)上面,卻要做很多的工作。”事實上我并不知道要做多少的工作。我隨后查閱的資料表明:不但要在網(wǎng)頁中放一些表單讓瀏覽者提交信息,還要在網(wǎng)站的服務(wù)器上寫些代碼來響應(yīng)這些提交信息。我向那位先生攤開雙手,說:“如果你真的想要這樣做,那么我們可能需要三個月,或者更久。因為我還必須學(xué)習(xí)一些新鮮的玩意兒才行。”那時的觸網(wǎng)者,對這些“新鮮的玩意兒”的了解還幾乎是零。因此,這個想法很自然地被擱置了。而我后來(1997年)被調(diào)到成都,終于有更多的機(jī)會接觸Intenet,而且瀏覽器環(huán)境已經(jīng)換成了Intenet Explorer 4.0。那是一個美好的時代。通過互聯(lián)網(wǎng)絡(luò),大量的新東西很快被傳遞進(jìn)來。我終于有機(jī)會了解一些新的技術(shù)名詞,例如css和JavaScript。當(dāng)時(1997年12月)HTML4.0的標(biāo)準(zhǔn)已經(jīng)確定,瀏覽器的兼容性開始變得更好,Internet Explorer(以下簡稱IE)也越來越有取代Netscape Navigator(以下簡稱NN)而一統(tǒng)天下的趨勢。除了這些,我還對在Delphi中進(jìn)行ISAPI-CGI和ISAPI Filter開發(fā)的技術(shù)也展開了深入的學(xué)習(xí)。1.1.2 第一段在網(wǎng)頁中的代碼1998年,我被調(diào)回到河南鄭州,成為一名專職程序員,任職于當(dāng)時一家開發(fā)反病毒軟件的公司,主要工作是用Delphi做Windows環(huán)境下的開發(fā)。而當(dāng)時我的個人興趣之一,就是“做一個個人網(wǎng)站”。那時大家都對“做主頁”很感興趣,我的老朋友傅貴就專門寫了一套代碼,以方便普通互聯(lián)網(wǎng)用戶將自己的主頁放到“個人空間”里。同時,他還為這些個人用戶提供了公共的BBS程序和一些其他的服務(wù)器端代碼。但我并不滿足于這些,我滿腦子想的是做一個“自己的網(wǎng)站”。

編輯推薦

《JavaScript語言精髓與編程實踐(第2版)》編輯推薦:以JavaScript視角看整個計算機(jī)語言的世界,小角度引來的大話題,難得的實踐派寫書風(fēng)格,對語法認(rèn)識細(xì)致入微,這是一本硬書,在技術(shù)原創(chuàng)書中,屬于稀有“異數(shù)”之作。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    JavaScript語言精髓與編程實踐 PDF格式下載


用戶評論 (總計100條)

 
 

  •   如果只是想做關(guān)于javascript的瀏覽器編程和dom之類的話,讀犀牛書和javascript高級程序設(shè)計。這本書不扯瀏覽器編程先關(guān)方面的東西,著重寫的一些javascript語言本身的特性,javascript實現(xiàn)一些設(shè)計模式、算法的研究和探索,對于語言本身的研究,確實是國內(nèi)出的最好的一本javascript書。
  •   買來看看學(xué)習(xí) 學(xué)習(xí)!昨天晚上大概過了一遍書中的內(nèi)容,里面的類容大多寫的是javascript本身的語言特性,沒有和瀏覽器相關(guān)的知識,總體來說書不錯,不適合新手,但是有一點我覺得里面夾雜著其他語言的類容,我不知道這樣對比好不好,但是對我來說看不懂其他語言,也就是那幾個小節(jié)對我們來說沒用
  •   好書不是一兩句評價就能說清的~
    看不起javascript,只粉靜態(tài)語言?
    只喜歡OO不喜歡函數(shù)式?
    入手吧親,除非你不碰web相關(guān)的開發(fā)~
  •   作者就是做javascript應(yīng)用出身,難怪有經(jīng)驗。這本書對提升語言的理解很有幫助。
    要說不足,語言有些啰嗦,作者總喜歡說一些“似是而非”的哲學(xué)句子。
  •   大部分Javascript技術(shù)書都是根據(jù)國外的書翻譯過來的,國內(nèi)作者寫得很少
  •   周愛民老師的神著,非常喜歡。從JavaScript起源開始講起,非常難得的一本書。非常喜歡。
  •   這本書從另一個角度描述javascript,嗯嗯,寫得不錯,目前還在看。
  •   書很不錯,慢慢講,講得非常細(xì)。只是有些地方放在現(xiàn)在有些過時,后面的編程實踐QoBean的就沒怎么看了。
  •   不適合新手~喜歡腳本語言的話可以收一本做提升
  •   一開始被這本書的前沿說得有點云里霧里的,我想作者要表達(dá)的是自己十年編程的一個沉淀,一時半會理解不了~先把能看懂的給看完,看不懂的后面再細(xì)細(xì)體會吧~
  •   早就聽說前端祖師爺大名,網(wǎng)上做JS開發(fā)的人極力推薦下訂購了這本書,國內(nèi)原著的JS書極少,本書是其中精品中的精品,記載著作者開發(fā)過程中的經(jīng)驗與心血,希望深入學(xué)習(xí)過本書以后在JS上能有較大的突破。
  •   內(nèi)容很有功力,建議對編程有一定的認(rèn)識之后再看
  •   延續(xù)第一版的講解風(fēng)格,深入淺出非常值得JSer閱讀。
  •   書記錄的很詳細(xì)
  •   適合想提高自己JS技術(shù),又有一定JS基礎(chǔ)的人~
  •   今天意外收到書,早上查了物流信息書還在路上。以為真的要5-6天呢。書是一本好書。值得深入的研讀。
  •   很好的書,寫得很細(xì)
  •   送書太慢,不止一次了:①周五訂,希望周末能收到,第一次快遞員發(fā)短信道歉,說病了,不能周末送到;第二次購書,還是周五,下周二時快遞員才打電話說你收下貨吧,周末應(yīng)該到的貨,都到下周二。我改變不了當(dāng)當(dāng),只好改變自己。
  •   里面廢話太多,跟作者一貫風(fēng)格一致。不過這本書內(nèi)容比較豐富,值得思考。
  •   書很新 正版很好。
  •   書剛收到 發(fā)個貼 先 呵呵
  •   可以作為js的入門書籍。淘寶愚公的書
  •   買這書并不是為了看~

    ps:當(dāng)當(dāng)網(wǎng)站驗證碼太坑爹了...
  •   書好不好不用我說了。不過當(dāng)當(dāng)坑爹啊,下了訂單第二天就由8.5折降到7.5折
  •   能再版,非精品也良品。
  •   真本書非常不錯
  •   學(xué)習(xí)一下,聽說這本書還行
  •   寫的很深,看一遍真的沒看透,有時間再看兩邊
  •   非常不錯哦~寫得比較深入,值得一度
  •   好書!可惜少了給人具體摹仿制作網(wǎng)站的例子。初學(xué)者好需要。
  •   講解精辟,太好了。
  •   沒有看,但是,整體上不錯的效果。
  •   正則
  •   講的比較深,比較細(xì)
  •   好書,建議一看
  •   慢慢看....很有深度
  •   還是不錯的,很喜歡。只是送貨時間有點慢
  •   隨便網(wǎng)上一搜就有評論了,你自己看著辦吧!趕快買一本收藏吧...
  •   這本書深入淺出的講解了JAVAscript的原理?。?/li>
  •   內(nèi)容由淺入深,很不錯,在原來有 JavaScript 一定基礎(chǔ)上閱讀更加好
  •   不錯的javascript書籍
  •   貨送的太急了,本來準(zhǔn)備周末領(lǐng)的,結(jié)果星期三就來了。慢慢研究周老師的精髓
  •   該書介紹的內(nèi)容就如他在開始描述的一樣,只講述其中某些細(xì)節(jié)。里面用的詞匯不易明白,讀起來晦澀,費力!也許只有高手才能讀懂吧!
  •   一直聽說很久了,而且現(xiàn)在 也已經(jīng)出到了第二版。之前一直沒買。這算是國內(nèi)最好的一本js書籍了吧。
  •   這書還不錯,深入學(xué)習(xí)中。
  •   發(fā)貨速度快,書的質(zhì)量挺好。
  •   書不錯了, 有點深~
  •   看了很多人推薦,很好的一本書,今天剛到,準(zhǔn)備開讀了!
  •   沒基礎(chǔ)的不要看哈
  •   就是需要這樣深入的js指導(dǎo)
  •   內(nèi)容覆蓋比較廣。值得一讀
  •   對于初學(xué)者還是比較有深度。
  •   紙張都挺好的,還沒看哈。
  •   封面有點皺,有點可惜,總體還是不錯的,快遞挺快
  •   對js有一定了解,有實際項目經(jīng)驗的可以看看,算是進(jìn)階提示的輔助讀物吧
  •   書本內(nèi)容蠻好,印刷也很好,哈哈哈
  •   怕就怕在不明了
  •   dfsdfsdf
  •   一般般。宣傳過度
  •   所講的不見得對,但作者能夠自圓其說。
  •   后面一頁是臟的 無語 公司買的 不知道內(nèi)容怎么樣
  •   我買了此書和另外一本javascript高級程序設(shè)計,一本放家里晚上看,一本放公司白天看,相比之下此書要遜色不少;可以感覺到作者本身是技術(shù)純熟的人,但里面不少知識講得過于零碎,表達(dá)過于繁瑣,難以融會貫通,希望作者再接再厲,下一版能深入淺出
  •   書的目錄部分少了好多頁,本來是當(dāng)資料書來查閱的,這樣一來,給我的閱讀帶來了極大的不便。
  •   幫男友買的~他很滿意的說~
  •   我買到的這本質(zhì)量比書店里賣的差遠(yuǎn)了.黃黃的
  •   還精粹呢,好的書應(yīng)該深入淺出,讓別人都能看懂,大家看他自己作的序章,還當(dāng)自己文筆很好呢,稀爛,作者本身語文水平就不行,寫的云里霧里的,還探討什么思想,先把語文學(xué)好了再來吧,一本書完全沒什么層次,象隨筆一樣,真坑爹,果斷退了。
  •   暢銷技術(shù)書,買來還沒來得及看,對內(nèi)容不做評論,只能說說紙張啥的,正版書紙張很好。
  •   JavaScript語言精髓與編程實踐
  •   書還算挺好的
  •   很好 ,對我很有幫助
  •   書不錯,我看了2遍才看懂
  •   js評價
  •     《JAVASCRIPT語言精髓與編程實踐》講述了JavaScript的語言實現(xiàn)與擴(kuò)展,主要包括以下三個方面的內(nèi)容:(1)動態(tài)、函數(shù)式語言,以及其它語言特性在JavaScript的表現(xiàn)與應(yīng)用;(2)如何用動態(tài)函數(shù)式語言的特性來擴(kuò)展JavaScript的語言特性與框架;(3)如何將JavaScript引擎整合到其它高級語言的開發(fā)過程中。
      
      
  •     第一次看是在學(xué)校里的圖書館,當(dāng)時感覺這本破書一點都不實用,既沒提怎么做特效,也沒提dom如何如何。。,工作后寫了一年js, 現(xiàn)在重新買來讀,終于明白書中內(nèi)容的牛逼之處~
  •     正如書中所說,很多人對javascript抱有很強的成見,認(rèn)為這只是個小孩玩的玩具,我承認(rèn),我以前也這么認(rèn)為,但自從我接觸到Ext之后,。。。我有一種震撼的感覺!!那樣的代碼!!我突然發(fā)現(xiàn)javascript,,,它一開始就不是玩具。。。本書算是我看的國產(chǎn)的講javascript中最好的一本。。。我暫時只看過前幾章,。。但講閉包那部分真的很精辟?。。。?!。。。。我看過的中文、英文資料里面,講閉包最好的就是本書了。。。
  •     只因為我看著好吃力。
      不過能看出aimingogo是用心去寫了。這么厚一本那!
      字?jǐn)?shù)太短不讓發(fā)表字?jǐn)?shù)長才可以發(fā)表
  •     這是國人寫的書,在國內(nèi)技術(shù)原創(chuàng)書中屬于稀有的“異數(shù)”,作者從語言本質(zhì)的角度去寫,寫得極為深入,本人閱讀后受益非淺。書中提到了《程序設(shè)計語言原理》、《程序設(shè)計語言實踐之路》、《設(shè)計模式》、《JavaScript權(quán)威指南》和《JavaScript高級程序設(shè)計》等書,估計作者他都閱讀了。讀者在閱讀這本書時也要看看相關(guān)章節(jié),這樣才能弄明白本書到底在講什么。
      
      本書高屋建瓴,習(xí)慣用俯視而不是平視
      
      這本書以JavaScript的視角去看整個計算機(jī)語言的世界,小角度引來的大話題。作者從Pascal說到C++和Java,從他做的第一個Web應(yīng)用到由他負(fù)責(zé)的開源框架,那是無一不談,無一不扯啊。于是乎,作者個人的觀點隨著他的筆間時不時的會帶出來,有些點呢不知道他是知道呢還是不知道,反正我是之前知道看了卻反而不知道了。比如在馮諾依曼體系結(jié)構(gòu)下的命令式編程語言發(fā)展史,之前本來是閱讀了《程序設(shè)計語言原理(原書第8版)》書中的相關(guān)知識(見第1章),那里面講得清楚明了,結(jié)果閱讀了這本書中同樣的內(nèi)容章節(jié)后反而讓本人弄得糊涂了。
      
      這本書的毛病也是國人原創(chuàng)書常見的毛病:本來一個點能說清楚的,結(jié)果作者的文字表達(dá)能力有限越說卻越說不清,還跑離了卻又想繞回來,最后弄得這個點只有作者本人和少數(shù)明白人才明白,也不加個注釋說明。比如書中的“詞法作用域”和“變量作用域”那一部分,作者后來又用“圈地”和“割據(jù)”來形容,這樣不免讓讀者又要去思考后來形容的這兩種 stuff 是 what ,how, why 了。
      
      但是作者的編程基礎(chǔ)的功底和開發(fā)經(jīng)驗是不容質(zhì)疑的。他其實是想借現(xiàn)在JavaScript的盛名寫本這樣的“語言本質(zhì)”論。所以,這本書雖然不可能成為經(jīng)典書--原因前面已講述,但是是一本不可多得的好書。下面說說這本書與市面上相比它獨有的,也就是說好好在哪兒:
      
      觸類旁通
      把JavaScript從資深程序員的思維模式去挖掘這門語言的奇妙與復(fù)雜。
      基本原理
      除了書名中有JavaScript,和為數(shù)不多JavaScript應(yīng)用層面的內(nèi)容外,更多的而是談編程語言實現(xiàn)機(jī)制和底層原理,甚至是計算機(jī)語言發(fā)展觀和未來的趨勢把握。
      非主流編程
      詳細(xì)的函數(shù)式編程語言的知識,對閱讀《計算機(jī)程序的構(gòu)造和解釋》這本書有幫助。
      開放分享
      網(wǎng)上有第1章的內(nèi)容,和第3章到第5章電子書的內(nèi)容,及第7章的前4節(jié),所以只有第2章、第6章及第7章的后幾節(jié)沒有得看。這是國內(nèi)出版界中技術(shù)書中極少見的開放和分享態(tài)度。
      支持國人多出原創(chuàng)好書!走精品路線!
  •     首先聲明,我看的只是InfoQ發(fā)布的本書的節(jié)選部分《動態(tài)函數(shù)式語言精髓》,雖然只是節(jié)選,但卻相當(dāng)?shù)木?,我的評論如下:
      
      個人感覺,這是一本硬書。
      
      這本書不是簡單的介紹某種語言的教科書,也不是介紹某些技巧的XX寶典,這本書是一本探討理論的書,是一本探討編程語言范式的書,這樣一本書看下來的代價就是你的頭發(fā)至少要掉個幾十根,而你頭腦中對于編程語言的思考和概念也將隨之清晰。
      
      本書主要通過JavaScript語言作為介紹的媒介,從而探討語言的實現(xiàn)以及語言本身的種種特性。
      
      JavaScript作為一種語言,很優(yōu)美,它既有動態(tài)語言的特性,也有命令式語言的本質(zhì),既有函數(shù)式編程的風(fēng)骨,也有面向?qū)ο蟮膬?nèi)涵,用JavaScript這種語言來作為描述語言范式的一種工具,雖然有它的局限性,但是也有它的獨到之處,而用JavaScript作為表述語言上也能體現(xiàn)這本書的一些觀點。
      
      雖然作者認(rèn)為語言只不過是一種工具,一種思想的表示,不是思想本身。但是,在不同的語言身上,我們能夠看到語言所代表的思想,以及那些思想下實現(xiàn)的本質(zhì)。
      
      當(dāng)然由于本書是談理論的書,所以難免有些枯燥,作者明顯是個理工類出身,文筆也并不優(yōu)美,但是某些語句還是相當(dāng)?shù)木实?,?jié)選部分如下:
      
      1、一種語言只是一種思想的表示,不是思想本身。
      2、語言只是一種工具,工具的選擇只在于“功用”能否達(dá)到,而不在于工具是什么。
      3、命令式語言 -> 馮諾依曼體系,以“存儲”和“處理”為核心。
      4、在語言中存儲被抽象為內(nèi)存,處理被抽象成運算(指令或者語句)。
      5、命令式語言的核心:通過運算去改變內(nèi)存中的數(shù)據(jù) 。
      6、數(shù)據(jù)的表現(xiàn)形式是編程的根本。
      7、命令式語言發(fā)展上的所有努力,最終都必然面臨的問題是“如何抽象數(shù)據(jù)存儲”。
      8、接口提出的觀點就是:只暴露數(shù)據(jù)體的邏輯行為能力,而不暴露這種能力的實現(xiàn)方法和基于的數(shù)據(jù)特征。
      9、對象的引用是面向?qū)ο篌w系的災(zāi)難之源。
      10、接口設(shè)計的目標(biāo)系統(tǒng)與計算機(jī)系統(tǒng)的功能特性的投影。
      11、原型的含義是指:如果構(gòu)造器有一個原型對象A,則由該構(gòu)造器創(chuàng)建的實例都必須復(fù)制自A。
      12、基于原型的“構(gòu)建過程”可以被簡單的映射為“復(fù)制”。
      13、基于原型繼承的對象系統(tǒng)的設(shè)計理念:將對象(類)的繼承關(guān)系,與對象(類)的行為描述分離。所有原型繼承的實質(zhì)其實是從無到有的一個過程。
      
      補充完善中。。。
  •     其實我只是看了infoq上免費提供的《動態(tài)函數(shù)式語言精粹》,那個也就是這本書的一個子集,按照infoq上的說法基本上是三、四、五幾章。我給推薦也是給《動態(tài)函數(shù)式語言精粹》。這本我就在china-pub上看了下目錄,感覺很多章節(jié)都是為了和這個書名相匹配才硬加上去的。作者自己也說他開始不是要寫JavaScript,不知道是不是因為變成講JavaScript的書銷量會好一些,所以才變成了寫JavaScript的書。當(dāng)然,這些其實也都是作者的自由,和讀者也沒什么關(guān)系。
      
      為什么推薦《動態(tài)函數(shù)式語言精粹》呢?當(dāng)然不是因為那本是免費的,而是作者在那本書里表現(xiàn)出來的對語言的態(tài)度,以及如何去認(rèn)識語言本質(zhì)。
      
      我們經(jīng)常會看到大家一起為了爭論哪種語言好,哪種框架好。這樣事情經(jīng)常重復(fù)發(fā)生。到底是Java好還是C#好,到底是Ruby好還是Python好,到底是Groovy更有前途還是Scala?我并不是在否定語言沒有優(yōu)劣之分,只是想問當(dāng)我們在推崇A否定B的時候是真的明白了A到底是什么B到底是什么。
      
      世界總是在變化的,只有掌握了語言本質(zhì)的人才能一直屹立在巔峰之上!
  •     比較全面地講述了JavaScript的前世今生。
      
      但是行文比較羅嗦,一個簡單的事情要用上四五層比喻,還說不透。對于追求閱讀快感的人,或者是技術(shù)相對有些積累的讀者,這書有點隔靴搔癢的感覺。
      
      比較推薦的書是ppk和pro javascript。
      網(wǎng)上有篇文章:Javascript Closures,用相對較短的篇幅把事情講的很清楚,就論述密度而言遠(yuǎn)遠(yuǎn)地超過了本書的內(nèi)容。(當(dāng)然理解起來的難度也要深不少。)
      http://www.jibbering.com/faq/faq_notes/closures.html
      這篇文章也有中文版,可以在google.cn上搜一下。
  •     很少有書能把javascript當(dāng)作一門真正的語言來講。
      
      這書并不適合用來入門,因為并沒有專題去講javascript的語法和使用。甚至這本書不適合只用javascript的人讀,因為書里大量引用來自其他語言的特性來說明javascript的優(yōu)點和不足。
      
      這本書適合一個已經(jīng)掌握至少一門語言,并且希望用javascript做大型工程的人來讀。一是對書中所述的東西會有深刻體會,二是能避免一些使用上的問題。
      
      推薦章節(jié):函數(shù)特性和動態(tài)特性
      
      本書最后一章編程實踐我沒有讀,因為目前我還沒機(jī)會在大型工程里使用javascript(大型工程的腳本我會考慮python),因此最后一章實踐的模擬oo等內(nèi)容對我來說用處不大。
      
      另外,書中語言有些晦澀,讀起來不是很流暢。
  •   看的第一本Js書啊,太牛了
  •   這本可以算是市面上js書籍中講的最深入的一本,你居然第一本就讀這個,其實的確不太合適
  •   同意,這絕對是是一本真正有內(nèi)容的書,其中大部分在其他書籍中幾乎完全找不到
  •   多謝,我去看看
  •   深有同感。就論述JavaScript語言本身而言,該書確實很原創(chuàng)。但單從技術(shù)層面來講,要點的條理性不太好,略顯拖沓。許多技術(shù)要點讀起來不如《精通JavaScript》、《JavaScript設(shè)計模式》干脆、利落。相比之下,后兩本書的實例代碼更為實用。
  •   嗯,最近正在看,其中仔細(xì)閱讀了閉包一節(jié), 確實講的不清晰,遠(yuǎn)不如網(wǎng)上那篇文章講的透徹易懂,但是這一節(jié)中對作用域闡述的那幾個圖還是很清晰的,對我之前作用域,執(zhí)行環(huán)境,活動對象的分析很有幫助,所以我是結(jié)合了此書中作用域和網(wǎng)上那篇文章來搞懂閉包的,下面是中文鏈接
    http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2007/08/JavaScriptClosures.html
  •   請問樓主,jibbering這篇文章的中文版叫什么名字,沒搜到唉
  •   能給出鏈接更好
  •   要想了解閉包等函數(shù)式概念,可以學(xué)習(xí)下schemer,schemer比較簡單,推薦SCIP,我斷斷續(xù)續(xù)看了好幾年,看了好幾遍
  •   書中語言有些晦澀,讀起來不是很流暢,我也這樣感覺,讀著很累~
  •   這本書有有些例子是變著法的給自己找不痛快... 不過,我喜歡!
  •   呵呵,語言上的確不怎么舒服~
  •   如果希望讀懂此書的全部內(nèi)容,還需要掌握大量編程語言的知識。
  •   讀了樣章,給我的感覺是我必須要買下這本書。絕對的經(jīng)典制作。
  •   你推薦的那個章節(jié),不如去看看國外人寫的,在我上一篇評論里有名字。。。
  •   關(guān)注一下,最近在搞這方面
  •   我一直喜歡閱讀影印版的書籍,也一直對國內(nèi)的作者比較失望。
    這本書讓我感覺事情還是變化的,過內(nèi)的技術(shù)作者還是不錯的。
  •   原來以為國內(nèi)的作者寫的應(yīng)該讀起來很流暢,不過不知道是不是作者有點故意賣弄文筆的原因,讀起來感覺有點晦澀。
    不過本書的內(nèi)容還是很經(jīng)典的,也絕對夠深入。
    而且,本書完全可以脫離開javascript的范疇,關(guān)于命令式語言和函數(shù)式語言的講解非常的精辟。
  •   倒數(shù)第二段中javascript和python,沒有可性吧
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7