注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡軟件與程序設計網絡編程JAVASCRIPT語言精髓與編程實踐

JAVASCRIPT語言精髓與編程實踐

JAVASCRIPT語言精髓與編程實踐

定 價:¥68.00

作 者: 周愛民
出版社: 電子工業(yè)出版社
叢編項: 動態(tài)語言技術精品書廊
標 簽: JAVASCRIPT

購買這本書可以去


ISBN: 9787121056871 出版時間: 2008-03-01 包裝: 精裝
開本: 16開 頁數: 509 字數:  

內容簡介

  本書詳細講述JavaScript作為一種混合式語言的各方面特性,包括過程式、面向對象、函數式和動態(tài)語言特性等,在動態(tài)函數式語言特性方面有著尤為細致的講述。本書的主要努力之一,就是分解出這些語言原子,并重現將它們混合在一起的過程與方法。通過從復雜性到單一語言特性的還原過程,讀者可了解到語言的本質,以及“層出不窮的語言特性”背后的真相。

  本書主要的著述目的是基于一種形式上簡單的語言來講述“語言的本質及其應用”。本書詳細講述了通過框架執(zhí)行過程來構造一個JavaScript擴展框架的方法,并完整地講述了框架擴展中各種設計取舍,因此可以作為學習研究計算機程序設計語言時的參考,用以展示現實系統如何實現經典理論中的各種編程范型。

作者簡介

  國內軟件開發(fā)界資深軟件工程師,從1996年開始涉足商業(yè)軟件開發(fā),歷任部門經理、區(qū)域總經理、高級軟件工程師、平臺架構師等職。周愛民先生在軟件開發(fā)、軟件工程、團隊建設以及部門管理方面經驗豐富,是BorlandDelphi產品技術專家,也是Qomo開源項目(JavaScript)的發(fā)起者。在JavaScript開發(fā)方面,有超過9年的實踐經驗。
  2003年5月,被美國Borland公司授予“Borland Delphi產品專家”稱號,并授予“論壇特別貢獻獎”。2004年8月,出版軟件開發(fā)專著《Delphi源代碼分析》,被業(yè)界譽為“Delphi領域精品著作”。2005年12月,發(fā)起JavaScript開源項目Qomolangma(Qomo),研究語言特性、框架設計與企業(yè)級應用庫。2007年4月,出版軟件工程專著《大道至簡——軟件工程實踐者的思想》,被譽為“激蕩新思的佳作”。2007年11月,參加CSDN主辦的軟件開發(fā)大會(SD2C),主講“JavaScript引擎技術”。

圖書目錄

第1部分  語言基礎    1
第1章  十年JAVASCRIPT    3
1.1  網頁中的代碼    3
1.1.1  新鮮的玩意兒    3
1.1.2  第一段在網頁中的代碼    4
1.1.3  最初的價值    5
1.2  用JAVASCRIPT來寫瀏覽器上的應用    6
1.2.1  我要做一個聊天室    6
1.2.2  Flash的一席之地    9
1.2.3  RWC與RIA之爭    10
1.3  沒有框架與庫的語言能怎樣發(fā)展呢?    12
1.3.1  做一個框架    12
1.3.2  重寫框架的語言層    15
1.3.3  富瀏覽器端開發(fā)(RWC)與AJAX    16
1.4  為JAVASCRIPT正名    18
1.4.1  JavaScript    18
1.4.2  Core JavaScript    19
1.4.3  SpiderMonkey JavaScript    20
1.4.4  ECMAScript    20
1.4.5  JScript    21
1.4.6  總述    21
1.5  JAVASCRIPT的應用環(huán)境    22
1.5.1  宿主環(huán)境(host environment)    23
1.5.2  外殼程序(Shell)    24
1.5.3  運行期環(huán)境(runtime)    25
第2章  JAVASCRIPT的語法    27
2.1  語法綜述    27
2.1.1  標識符所綁定的語義    28
2.1.2  識別語法錯誤與運行錯誤    29
2.2  JAVASCRIPT的語法:變量聲明    29
2.2.1  變量的數據類型    30
2.2.2  變量聲明    32
2.2.3  變量聲明中的一般性問題    33
2.3  JAVASCRIPT的語法:表達式運算    40
2.3.1  一般表達式運算    42
2.3.2  邏輯運算    42
2.3.3  字符串運算    43
2.3.4  比較運算    44
2.3.5  賦值運算    48
2.3.6  函數調用    49
2.3.7  特殊作用的運算符    50
2.3.8  運算優(yōu)先級    51
2.4  JAVASCRIPT的語法:語句    53
2.4.1  表達式語句    54
2.4.2  分支語句    63
2.4.3  循環(huán)語句    66
2.4.4  流程控制:一般子句    68
2.4.5  流程控制:異常    74
2.5  面向對象編程的語法概要    75
2.5.1  對象直接量聲明與實例創(chuàng)建    76
2.5.2  對象成員列舉、存取和刪除    80
2.5.3  屬性存取與方法調用    84
2.5.4  對象及其成員的檢查    85
2.5.5  可列舉性    87
2.5.6  默認對象的指定    89
2.6  運算符的二義性    89
2.6.1  加號“+”的二義性    90
2.6.2  括號“( )”的二義性    92
2.6.3  冒號“:”與標簽的二義性    93
2.6.4  大括號“{ }”的二義性    94
2.6.5  逗號“,”的二義性    97
2.6.6  方括號“[ ]”的二義性    100
第2部分  語言特性及基本應用    105
第3章  JAVASCRIPT的非函數式語言特性    107
3.1  概述    107
3.1.1  命令式語言與結構化編程    108
3.1.2  結構化的疑難    110
3.1.3  “面向對象語言”是突破嗎?    112
3.1.4  更高層次的抽象:接口    115
3.1.5  再論語言的分類    117
3.1.6  JavaScript的語源    119
3.2  基本語法的結構化含義    121
3.2.1  基本邏輯與代碼分塊    121
3.2.2  模塊化的層次:語法作用域    124
3.2.3  執(zhí)行流程及其變更    129
3.2.4  模塊化的效果:變量作用域    138
3.2.5  語句的副作用    145
3.3  JAVASCRIPT中的原型繼承    148
3.3.1  空對象(null)與空的對象    148
3.3.2  原型繼承的基本性質    149
3.3.3  空的對象是所有對象的基礎    150
3.3.4  構造復制?寫時復制?還是讀遍歷?    151
3.3.5  構造過程:從函數到構造器    153
3.3.6  預定義屬性與方法    154
3.3.7  原型鏈的維護    155
3.3.8  原型繼承的實質    160
3.4  JAVASCRIPT的對象系統    165
3.4.1  封裝    165
3.4.2  多態(tài)    167
3.4.3  事件    169
3.4.4  類抄寫?或原型繼承?    171
3.4.5  JavaScript中的對象(構造器)    176
3.4.6  不能通過繼承得到的效果    178
第4章  JAVASCRIPT的函數式語言特性    181
4.1  概述    181
4.1.1  從代碼風格說起    182
4.1.2  為什么常見的語言不贊同連續(xù)求值    182
4.1.3  函數式語言的淵源    184
4.2  函數式語言中的函數    186
4.2.1  函數是運算元    186
4.2.2  在函數內保存數據    187
4.2.3  函數內的運算對函數外無副作用    188
4.3  從運算式語言到函數式語言    189
4.3.1  JavaScript中的幾種連續(xù)運算    190
4.3.2  運算式語言    194
4.3.3  如何消滅掉語句    198
4.4  函數:對運算式語言的補充和組織    202
4.4.1  函數是必要的補充    202
4.4.2  函數是代碼的組織形式    204
4.4.3  重新認識“函數”    205
4.4.4  JavaScript語言中的函數式編程    208
4.5  JAVASCRIPT中的函數    209
4.5.1  可變參數與值參數傳遞    210
4.5.2  非惰性求值    213
4.5.3  函數是第一型    215
4.5.4  函數是一個值    217
4.5.5  可遍歷的調用棧    218
4.6  閉包    222
4.6.1  什么是閉包    223
4.6.2  什么是函數實例與函數引用    224
4.6.3  (在被調用時,)每個函數實例至少擁有一個閉包    226
4.6.4  函數閉包與調用對象    228
4.6.5  函數實例擁有多個閉包的情況    236
4.6.6  語句或語句塊中的閉包問題    238
4.6.7  閉包中的標識符(變量)特例    240
4.6.8  函數對象的閉包及其效果    242
4.6.9  閉包與可見性    244
第5章  JAVASCRIPT的動態(tài)語言特性    253
5.1  概述    253
5.1.1  動態(tài)數據類型的起源    254
5.1.2  動態(tài)執(zhí)行系統的起源    254
5.1.3  腳本系統的起源    256
5.1.4  腳本只是一種表面的表現形式    257
5.2  動態(tài)執(zhí)行(EVAL)    259
5.2.1  動態(tài)執(zhí)行與閉包    259
5.2.2  動態(tài)執(zhí)行過程中的語句、表達式與值    263
5.2.3  奇特的、甚至是負面的影響    265
5.3  動態(tài)方法調用(CALL與APPLY)    267
5.3.1  動態(tài)方法調用中指定this對象    267
5.3.2  丟失的this引用    269
5.3.3  棧的可見與修改    270
5.3.4  兼容性:低版本中的call()與apply()    272
5.4  重寫    275
5.4.1  原型重寫    275
5.4.2  構造器重寫    276
5.4.3  對象成員的重寫    289
5.4.4  宿主對重寫的限制    292
5.4.5  引擎對重寫的限制    297
5.5  包裝類:面向對象的妥協    301
5.5.1  顯式包裝元數據    302
5.5.2  隱式包裝的過程與檢測方法    303
5.5.3  包裝值類型數據的必要性與問題    305
5.5.4  其他直接量與相應的構造器    306
5.6  關聯數組:對象與數組的動態(tài)特性    309
5.6.1  關聯數組是對象系統的基礎    309
5.6.2  用關聯數組實現的索引數組    310
5.6.3  干凈的對象    313
5.7  類型轉換    316
5.7.1  宿主環(huán)境下的特殊類型系統    317
5.7.2  值運算:類型轉換的基礎    319
5.7.3  隱式轉換    320
5.7.4  值類型之間的轉換    322
5.7.5  從引用到值:深入探究valueOf()方法    327
5.7.6  到字符串類型的顯式轉換    329
第3部分  編程實踐    335
第6章  QOMO框架的核心技術與實現    337
6.1  QOMO框架的技術發(fā)展與基本特性    337
6.1.1  Qomo框架的技術發(fā)展    337
6.1.2  Qomo的體系結構    342
6.1.3  Qomo框架設計的基本原則    343
6.2  基于類繼承的對象系統    345
6.2.1  Qomo類繼承的基本特性    345
6.2.2  Qomo類繼承的語法    347
6.2.3  Qomo類繼承系統的實現    351
6.2.4  Qomo類繼承系統的高級話題    371
6.3  多投事件系統    385
6.3.1  多投事件系統的基本特性與語法    385
6.3.2  多投事件系統的實現    387
6.3.3  多投事件的中斷與返回值    390
6.3.4  多投事件系統的安全性    391
6.4  接口系統    393
6.4.1  基本概念與語法    395
6.4.2  接口實現    398
6.4.3  Qomo接口系統的高級話題    401
6.4.4  接口委托    408
6.4.5  Qomo接口系統的實現    418
6.5  命名空間    426
6.5.1  Qomo命名空間的復雜性    426
6.5.2  命名空間的使用    429
6.5.3  命名空間的實現    433

6.6  AOP    434
6.6.1  基本概念與語法    435
6.6.2  高級切面特性    439
6.6.3  Qomo中切面系統的實現    447
6.7  其他    449
6.7.1  裝載、內聯與導入    449
6.7.2  四種模板技術    453
6.7.3  出錯處理    459
6.7.4  其他功能模塊    460
第7章  一般性的動態(tài)函數式語言技巧    469
7.1  消除代碼的全局變量名占用    469
7.2  一次性的構造器    471
7.3  對象充當識別器    472
7.4  識別NEW運算進行的構造器調用    474
7.5  使用直接量及其包裝類快速調用對象方法    475
7.6  三天前是星期幾?    476
7.7  使用對象的值含義來構造復雜對象    477
7.8  控制字符串替換過程的基本模式    480
7.9  實現二叉樹    481
7.10  將函數封裝為方法    483
7.11  使用WITH語句來替代函數參數傳遞    485
7.12  使用對象閉包來重置重寫    486
7.13  構造函數參數    488
7.14  使用更復雜的表達式來消減IF語句    491
7.15  利用鉤子函數來擴展功能    493
7.16  安全的字符串    495
附錄A:術語表    497
附錄B:主要引擎的特性差異列表    503
附錄C:附圖    505
附錄D:參考書目    509

本目錄推薦

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