注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡軟件與程序設計JAVA及其相關(guān)JavaScript語言精髓與編程實踐(第2版)

JavaScript語言精髓與編程實踐(第2版)

JavaScript語言精髓與編程實踐(第2版)

定 價:¥79.00

作 者: 周愛民 著
出版社: 電子工業(yè)出版社
叢編項:
標 簽: J2EE

ISBN: 9787121156403 出版時間: 2012-03-01 包裝: 平裝
開本: 16開 頁數(shù): 456 字數(shù):  

內(nèi)容簡介

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

作者簡介

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

圖書目錄

第1部分 語言基礎(chǔ)
 第1章 十年JavaScript
  1.1 網(wǎng)頁中的代碼
  1.1.1 新鮮的玩意兒
  1.1.2 第一段在網(wǎng)頁中的代碼
  1.1.3 最初的價值
  1.2 用JavaScript來寫瀏覽器上的應用
  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 語言的進化
  1.4.1 Qomo的重生
  1.4.2 QoBean是對語言的重新組織
  1.4.3 JavaScript作為一門語言的進化
  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的應用環(huán)境
  1.6.1 宿主環(huán)境
  1.6.2 外殼程序
  1.6.3 運行期環(huán)境
 第2章 JavaScript的語法
  2.1 語法綜述
  2.1.1 標識符所綁定的語義
  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的語法:表達式運算
  2.3.1 一般表達式運算
  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 表達式語句
  2.4.1.1 一般表達式語句
  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 標簽聲明
  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 正則表達式直接量聲明
  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 默認對象的指定
  2.6 【ES5】嚴格模式下的語法限制
  2.6.1 語法限制
  2.6.2 嚴格模式的范圍
  2.7 運算符的二義性
  2.7.1 加號“+”的二義性
  2.7.2 括號“( )”的二義性
  2.7.3 冒號“:”與標簽的二義性
  2.7.4 大括號“{ }”的二義性
  2.7.5 逗號“,”的二義性
  2.7.6 方括號“[ ]”的二義性
第2部分 語言特性及基本應用
 第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:表達式
  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)造復制?寫時復制?還是讀遍歷?
  3.3.5 構(gòu)造過程:從函數(shù)到構(gòu)造器
  3.3.6 預定義屬性與方法
  3.3.7 原型鏈的維護
  3.3.7.1 兩個原型鏈
  3.3.7.2 constructor屬性的維護
  3.3.7.3 內(nèi)部原型鏈的作用
  3.3.7.4 【ES5】在SpiderMonkey與ES5中的原型鏈維護
  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)維護
  3.5.3.1 取屬性列表
  3.5.3.2 使用defineProperty來維護屬性的性質(zhì)
  3.5.3.3 對于繼承自原型的屬性,修改其值的效果
  3.5.3.4 重寫原型繼承來的屬性的描述符
 第4章 JavaScript的函數(shù)式語言特性
  4.1 概述
  4.1.1 從代碼風格說起
  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 三元表達式的連用
  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 通過表達式消滅分支語句
  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 重新認識“函數(shù)”
  4.4.3.1 “函數(shù)”==“l(fā)ambda”
  4.4.3.2 當運算符等義于某個函數(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)用對象”的局部變量維護規(guī)則
  4.6.2.2 “全局對象”的變量維護規(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 閉包中的標識符(變量)特例
  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】嚴格模式與閉包
  4.7.1 嚴格模式下的執(zhí)行限制
  4.7.2 嚴格模式下的匿名函數(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使用當前函數(shù)的閉包
  5.2.2 動態(tài)執(zhí)行過程中的語句、表達式與值
  5.2.3 奇特的、甚至是負面的影響
  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 其他直接量與相應的構(gòu)造器
  5.5.4.1 函數(shù)特例
  5.5.4.2 正則表達式特例
  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 運算導致的類型轉(zhuǎn)換
  5.7.3.2 語句(語義)導致的類型轉(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的基本設計
  6.4.2 DSL的基本實現(xiàn)
  6.4.3 DSL的基本應用
  6.4.4 一些修補
  6.4.5 基于嚴格模式的一些修補
 第7章 一般性的動態(tài)函數(shù)式
  語言技巧
  7.1 消除代碼的全局變量名占用
  7.2 一次性的構(gòu)造器
  7.3 對象充當識別器
  7.4 識別new運算進行的構(gòu)造器調(diào)用
  7.5 使用直接量及其包裝類快速調(diào)用對象方法
  7.6 三天前是星期幾
  7.7 使用對象的值含義來構(gòu)造復雜對象
  7.8 控制字符串替換過程的基本模式
  7.9 實現(xiàn)二叉樹
  7.10 將函數(shù)封裝為方法
  7.11 使用with語句來替代函數(shù)參數(shù)傳遞
  7.12 使用對象閉包來重置重寫
  7.13 構(gòu)造函數(shù)參數(shù)
  7.14 使用更復雜的表達式來消減if語句
  7.15 利用鉤子函數(shù)來擴展功能
  7.16 安全的字符串
  附錄A 術(shù)語表
  附錄B 主要引擎的特性差異列表
  附錄C 附圖
  附錄D 參考書目
  附錄E 本書各版次主要修改

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號