日本免费精品视频,男人的天堂在线免费视频,成人久久久精品乱码一区二区三区,高清成人爽a毛片免费网站

在線客服
JavaScript高級(jí)程序設(shè)計(jì)(第3版)圖書
人氣:133

JavaScript高級(jí)程序設(shè)計(jì)(第3版)

前端開發(fā)經(jīng)典圖書 JavaScript技術(shù)名著 web前端開發(fā)國(guó)內(nèi)js一書 掌握J(rèn)avaScript編程藝術(shù)

內(nèi)容簡(jiǎn)介

《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》是JavaScript超級(jí)暢銷書的版。ECMAScript 5和HTML5在標(biāo)準(zhǔn)之爭(zhēng)中雙雙勝出,使大量專有實(shí)現(xiàn)和客戶端擴(kuò)展正式進(jìn)入規(guī)范,同時(shí)也為JavaScript增添了很多適應(yīng)未來(lái)發(fā)展的新特性。《JavaScript高級(jí)程序設(shè)計(jì)》這一版除增加5章全新內(nèi)容外,其他章節(jié)也有較大幅度的增補(bǔ)和修訂,新內(nèi)容篇幅約占三分之一。全書從JavaScript語(yǔ)言實(shí)現(xiàn)的各個(gè)組成部分——語(yǔ)言核心、DOM、BOM、事件模型講起,深入淺出地探討了面向?qū)ο缶幊獭jax與Comet服務(wù)器端通信,HTML5表單、媒體、Canvas(包括WebGL)及Web Workers、地理定位、跨文檔傳遞消息、客戶端存儲(chǔ)(包括IndexedDB)等新API,還介紹了離線應(yīng)用和與維護(hù)、性能、部署相關(guān)的開發(fā)實(shí)踐。《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》附錄展望了未來(lái)的API和ECMAScript Harmony規(guī)范。

《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》適合有一定編程經(jīng)驗(yàn)的Web應(yīng)用開發(fā)人員閱讀,也可作為高校及社會(huì)實(shí)用技術(shù)培訓(xùn)相關(guān)專業(yè)課程的教材。

編輯推薦

1995年,Brendan Eich創(chuàng)造了JavaScript。

2005年,席卷全球的“Ajax熱”激發(fā)了全世界Web開發(fā)人員學(xué)習(xí)JavaScript的熱情。與此同時(shí),本書第1版誕生。這一版的中文版狂銷4萬(wàn)冊(cè),被譽(yù)為“深度的JavaScript經(jīng)典”,奠定了其不可替代的地位。2005年到2009年,前端開發(fā)社區(qū)在實(shí)踐中充分檢驗(yàn)了這門語(yǔ)言的各種實(shí)現(xiàn)和擴(kuò)展,JavaScript從被戲謔的“玩具語(yǔ)言”一躍成為軟件業(yè)舉足輕重的通用編程語(yǔ)言。2009年1月本書第2版應(yīng)運(yùn)而生,凝聚作者和社區(qū)專家多年寶貴經(jīng)驗(yàn)的這一技術(shù)名著再次得到讀者認(rèn)可和褒揚(yáng),中文版銷量達(dá)到2萬(wàn)冊(cè)。2009年到2011年,ECMAScript5和HTML5在標(biāo)準(zhǔn)之爭(zhēng)中雙雙勝出,使大量專有實(shí)現(xiàn)和客戶端擴(kuò)展正式進(jìn)入規(guī)范,同時(shí)也為這門語(yǔ)言增添了很多適應(yīng)未來(lái)發(fā)展的新特性。2012年初本書第3版面世,中文版也緊隨其后。第3版除增加5章全新內(nèi)容外,其他章節(jié)也有較大幅度的增補(bǔ)和修訂,新內(nèi)容篇幅約占三分之一。

作為JavaScript技術(shù)經(jīng)典名著,《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》承繼了之前版本深入、貼近實(shí)戰(zhàn)的特點(diǎn),在詳細(xì)講解了JavaScript語(yǔ)言的核心之后,條分縷析地為讀者展示了現(xiàn)有規(guī)范及實(shí)現(xiàn)為開發(fā)Web應(yīng)用提供的各種支持和特性。

作者簡(jiǎn)介

Nicholas C. Zakas(尼古拉斯?澤卡斯)世界Web技術(shù)專家,現(xiàn)為雅虎公司界面呈現(xiàn)架構(gòu)師,負(fù)責(zé)My Yahoo!和雅虎首頁(yè)等大訪問(wèn)量站點(diǎn)的設(shè)計(jì)。尼古拉斯擁有豐富的Web開發(fā)和界面設(shè)計(jì)經(jīng)驗(yàn),曾經(jīng)參與許多大公司的Web解決方案開發(fā)。他還是High Performance JavaScript一書的作者,并與他人合作撰寫了Professional Ajax和Even Faster Web Sites。尼古拉斯擁有梅里馬克學(xué)院計(jì)算機(jī)科學(xué)學(xué)士學(xué)位和埃迪柯特學(xué)院的MBA學(xué)位。他的個(gè)人網(wǎng)站是www.nczonline.net,他的Twitter別名是@slicknet。

目錄

目 錄

第1章 JavaScript簡(jiǎn)介 1

1.1 JavaScript簡(jiǎn)史 1

1.2 JavaScript實(shí)現(xiàn) 2

1.2.1 ECMAScript 3

1.2.2 文檔對(duì)象模型(DOM) 5

1.2.3 瀏覽器對(duì)象模型(BOM) 8

1.3 JavaScript版本 8

1.4 小結(jié) 9

第2章 在HTML中使用JavaScript 10

2.1 元素 10

2.1.1 標(biāo)簽的位置 12

2.1.2 延遲腳本 13

2.1.3 異步腳本 13

2.1.4 在XHTML中的用法 14

2.1.5 不推薦使用的語(yǔ)法 16

2.2 嵌入代碼與外部文件 16

2.3 文檔模式 16

2.4 元素 18

2.5 小結(jié) 18

第3章 基本概念 19

3.1 語(yǔ)法 19

3.1.1 區(qū)分大小寫 19

3.1.2 標(biāo)識(shí)符 19

3.1.3 注釋 20

3.1.4 嚴(yán)格模式 20

3.1.5 語(yǔ)句 20

3.2 關(guān)鍵字和保留字 21

3.3 變量 22

3.4 數(shù)據(jù)類型 23

3.4.1 typeof操作符 23

3.4.2 Undefined類型 24

3.4.3 Null類型 25

3.4.4 Boolean類型 26

3.4.5 Number類型 27

3.4.6 String類型 32

3.4.7 Object類型 35

3.5 操作符 36

3.5.1 一元操作符 36

3.5.2 位操作符 39

3.5.3 布爾操作符 44

3.5.4 乘性操作符 47

3.5.5 加性操作符 48

3.5.6 關(guān)系操作符 50

3.5.7 相等操作符 51

3.5.8 條件操作符 53

3.5.9 賦值操作符 53

3.5.10 逗號(hào)操作符 54

3.6 語(yǔ)句 54

3.6.1 if語(yǔ)句 54

3.6.2 do-while語(yǔ)句 55

3.6.3 while語(yǔ)句 55

3.6.4 for語(yǔ)句 56

3.6.5 for-in語(yǔ)句 57

3.6.6 label語(yǔ)句 58

3.6.7 break和continue語(yǔ)句 58

3.6.8 with語(yǔ)句 60

3.6.9 switch語(yǔ)句 60

3.7 函數(shù) 62

3.7.1 理解參數(shù) 64

3.7.2 沒(méi)有重載 66

3.8 小結(jié) 67

第4章 變量、作用域和內(nèi)存問(wèn)題 68

4.1 基本類型和引用類型的值 68

4.1.1 動(dòng)態(tài)的屬性 68

4.1.2 復(fù)制變量值 69

4.1.3 傳遞參數(shù) 70

4.1.4 檢測(cè)類型 72

4.2 執(zhí)行環(huán)境及作用域 73

4.2.1 延長(zhǎng)作用域鏈 75

4.2.2 沒(méi)有塊級(jí)作用域 76

4.3 垃圾收集 78

4.3.1 標(biāo)記清除 78

4.3.2 引用計(jì)數(shù) 79

4.3.3 性能問(wèn)題 80

4.3.4 管理內(nèi)存 81

4.4 小結(jié) 81

第5章 引用類型 83

5.1 Object類型 83

5.2 Array類型 86

5.2.1 檢測(cè)數(shù)組 88

5.2.2 轉(zhuǎn)換方法 89

5.2.3 棧方法 90

5.2.4 隊(duì)列方法 91

5.2.5 重排序方法 92

5.2.6 操作方法 94

5.2.7 位置方法 95

5.2.8 迭代方法 96

5.2.9 縮小方法 97

5.3 Date類型 98

5.3.1 繼承的方法 100

5.3.2 日期格式化方法 101

5.3.3 日期/時(shí)間組件方法 102

5.4 RegExp類型 103

5.4.1 RegExp實(shí)例屬性 105

5.4.2 RegExp實(shí)例方法 106

5.4.3 RegExp構(gòu)造函數(shù)屬性 107

5.4.4 模式的局限性 109

5.5 Function類型 110

5.5.1 沒(méi)有重載(深入理解) 111

5.5.2 函數(shù)聲明與函數(shù)表達(dá)式 111

5.5.3 作為值的函數(shù) 112

5.5.4 函數(shù)內(nèi)部屬性 113

5.5.5 函數(shù)屬性和方法 116

5.6 基本包裝類型 118

5.6.1 Boolean類型 120

5.6.2 Number類型 120

5.6.3 String類型 122

5.7 單體內(nèi)置對(duì)象 130

5.7.1 Global對(duì)象 131

5.7.2 Math對(duì)象 134

5.8 小結(jié) 137

第6章 面向?qū)ο蟮某绦蛟O(shè)計(jì) 138

6.1 理解對(duì)象 138

6.1.1 屬性類型 139

6.1.2 定義多個(gè)屬性 142

6.1.3 讀取屬性的特性 143

6.2 創(chuàng)建對(duì)象 144

6.2.1 工廠模式 144

6.2.2 構(gòu)造函數(shù)模式 144

6.2.3 原型模式 147

6.2.4 組合使用構(gòu)造函數(shù)模式和原型模式 159

6.2.5 動(dòng)態(tài)原型模式 159

6.2.6 寄生構(gòu)造函數(shù)模式 160

6.2.7 穩(wěn)妥構(gòu)造函數(shù)模式 161

6.3 繼承 162

6.3.1 原型鏈 162

6.3.2 借用構(gòu)造函數(shù) 167

6.3.3 組合繼承 168

6.3.4 原型式繼承 169

6.3.5 寄生式繼承 171

6.3.6 寄生組合式繼承 172

6.4 小結(jié) 174

第7章 函數(shù)表達(dá)式 175

7.1 遞歸 177

7.2 閉包 178

7.2.1 閉包與變量 181

7.2.2 關(guān)于this對(duì)象 182

7.2.3 內(nèi)存泄漏 183

7.3 模仿塊級(jí)作用域 184

7.4 私有變量 186

7.4.1 靜態(tài)私有變量 188

7.4.2 模塊模式 189

7.4.3 增強(qiáng)的模塊模式 191

7.5 小結(jié) 192

第8章 BOM 193

8.1 window對(duì)象 193

8.1.1 全局作用域 193

8.1.2 窗口關(guān)系及框架 194

8.1.3 窗口位置 197

8.1.4 窗口大小 198

8.1.5 導(dǎo)航和打開窗口 199

8.1.6 間歇調(diào)用和超時(shí)調(diào)用 203

8.1.7 系統(tǒng)對(duì)話框 205

8.2 location對(duì)象 207

8.2.1 查詢字符串參數(shù) 207

8.2.2 位置操作 208

8.3 navigator對(duì)象 210

8.3.1 檢測(cè)插件 211

8.3.2 注冊(cè)處理程序 213

8.4 screen對(duì)象 214

8.5 history對(duì)象 215

8.6 小結(jié) 216

第9章 客戶端檢測(cè) 217

9.1 能力檢測(cè) 217

9.1.1 更的能力檢測(cè) 218

9.1.2 能力檢測(cè),不是瀏覽器檢測(cè) 220

9.2 怪癖檢測(cè) 220

9.3 用戶檢測(cè) 221

9.3.1 用戶字符串的歷史 222

9.3.2 用戶字符串檢測(cè)技術(shù) 228

9.3.3 完整的代碼 242

9.3.4 使用方法 245

9.4 小結(jié) 246

第10章 DOM 247

10.1 節(jié)點(diǎn)層次 247

10.1.1 Node類型 248

10.1.2 Document類型 253

10.1.3 Element類型 261

10.1.4 Text類型 270

10.1.5 Comment類型 273

10.1.6 CDATASection類型 274

10.1.7 DocumentType類型 274

10.1.8 DocumentFragment類型 275

10.1.9 Attr類型 276

10.2 DOM操作技術(shù) 277

10.2.1 動(dòng)態(tài)腳本 277

10.2.2 動(dòng)態(tài)樣式 279

10.2.3 操作表格 281

10.2.4 使用NodeList 283

10.3 小結(jié) 284

第11章 DOM擴(kuò)展 286

11.1 選擇符API 286

11.1.1 querySelector()方法 286

11.1.2 querySelectorAll()方法 287

11.1.3 matchesSelector()方法 288

11.2 元素遍歷 288

11.3 HTML5 289

11.3.1 與類相關(guān)的擴(kuò)充 289

11.3.2 焦點(diǎn)管理 291

11.3.3 HTMLDocument的變化 292

11.3.4 字符集屬性 293

11.3.5 自定義數(shù)據(jù)屬性 293

11.3.6 插入標(biāo)記 294

11.3.7 scrollIntoView()方法 298

11.4 專有擴(kuò)展 298

11.4.1 文檔模式 298

11.4.2 children屬性 299

11.4.3 contains()方法 300

11.4.4 插入文本 301

11.4.5 滾動(dòng) 303

11.5 小結(jié) 304

第12章 DOM2和DOM3 305

12.1 DOM變化 305

12.1.1 針對(duì)XML命名空間的變化 306

12.1.2 其他方面的變化 309

12.2 樣式 312

12.2.1 訪問(wèn)元素的樣式 313

12.2.2 操作樣式表 317

12.2.3 元素大小 320

12.3 遍歷 326

12.3.1 NodeIterator 328

12.3.2 TreeWalker 330

12.4 范圍 332

12.4.1 DOM中的范圍 332

12.4.2 IE8及更早版本中的范圍 340

12.5 小結(jié) 343

第13章 事件 345

13.1 事件流 345

13.1.1 事件冒泡 346

13.1.2 事件捕獲 346

13.1.3 DOM事件流 347

13.2 事件處理程序 348

13.2.1 HTML事件處理程序 348

13.2.2 DOM0級(jí)事件處理程序 350

13.2.3 DOM2級(jí)事件處理程序 351

13.2.4 IE事件處理程序 352

13.2.5 跨瀏覽器的事件處理程序 353

13.3 事件對(duì)象 355

13.3.1 DOM中的事件對(duì)象 355

13.3.2 IE中的事件對(duì)象 358

13.3.3 跨瀏覽器的事件對(duì)象 360

13.4 事件類型 362

13.4.1 UI事件 362

13.4.2 焦點(diǎn)事件 367

13.4.3 鼠標(biāo)與滾輪事件 368

13.4.4 鍵盤與文本事件 379

13.4.5 復(fù)合事件 384

13.4.6 變動(dòng)事件 385

13.4.7 HTML5事件 388

13.4.8 設(shè)備事件 395

13.4.9 觸摸與手勢(shì)事件 399

13.5 內(nèi)存和性能 402

13.5.1 事件委托 402

13.5.2 移除事件處理程序 404

13.6 模擬事件 405

13.6.1 DOM中的事件模擬 405

13.6.2 IE中的事件模擬 410

13.7 小結(jié) 411

第14章 表單腳本 412

14.1 表單的基礎(chǔ)知識(shí) 412

14.1.1 提交表單 413

14.1.2 重置表單 414

14.1.3 表單字段 414

14.2 文本框腳本 419

14.2.1 選擇文本 420

14.2.2 過(guò)濾輸入 423

14.2.3 自動(dòng)切換焦點(diǎn) 426

14.2.4 HTML5約束驗(yàn)證API 427

14.3 選擇框腳本 431

14.3.1 選擇選項(xiàng) 432

14.3.2 添加選項(xiàng) 434

14.3.3 移除選項(xiàng) 435

14.3.4 移動(dòng)和重排選項(xiàng) 435

14.4 表單序列化 436

14.5 富文本編輯 438

14.5.1 使用contenteditable屬性 438

14.5.2 操作富文本 439

14.5.3 富文本選區(qū) 441

14.5.4 表單與富文本 443

14.6 小結(jié) 443

第15章 使用Canvas繪圖 445

15.1 基本用法 445

15.2 2D上下文 446

15.2.1 填充和描邊 446

15.2.2 繪制矩形 447

15.2.3 繪制路徑 449

15.2.4 繪制文本 451

15.2.5 變換 453

15.2.6 繪制圖像 456

15.2.7 陰影 457

15.2.8 漸變 458

15.2.9 模式 460

15.2.10 使用圖像數(shù)據(jù) 460

15.2.11 合成 462

15.3 WebGL 463

15.3.1 類型化數(shù)組 463

15.3.2 WebGL上下文 468

15.3.3 支持 478

15.4 小結(jié) 478

第16章 HTML5腳本編程 480

16.1 跨文檔消息傳遞 480

16.2 原生拖放 481

16.2.1 拖放事件 482

16.2.2 自定義放置目標(biāo) 482

16.2.3 dataTransfer對(duì)象 483

16.2.4 dropEffect與effectAllowed 484

16.2.5 可拖動(dòng) 485

16.2.6 其他成員 485

16.3 媒體元素 486

16.3.1 屬性 487

16.3.2 事件 488

16.3.3 自定義媒體播放器 488

16.3.4 檢測(cè)編解碼器的支持情況 489

16.3.5 Audio類型 490

16.4 歷史狀態(tài)管理 491

16.5 小結(jié) 492

第17章 錯(cuò)誤處理與調(diào)試 493

17.1 瀏覽器報(bào)告的錯(cuò)誤 493

17.1.1 IE 493

17.1.2 Firefox 494

17.1.3 Safari 496

17.1.4 Opera 497

17.1.5 Chrome 498

17.2 錯(cuò)誤處理 499

17.2.1 try-catch語(yǔ)句 500

17.2.2 拋出錯(cuò)誤 503

17.2.3 錯(cuò)誤(error)事件 505

17.2.4 處理錯(cuò)誤的策略 506

17.2.5 常見的錯(cuò)誤類型 507

17.2.6 區(qū)分致命錯(cuò)誤和非致命錯(cuò)誤 510

17.2.7 把錯(cuò)誤記錄到服務(wù)器 511

17.3 調(diào)試技術(shù) 512

17.3.1 將消息記錄到控制臺(tái) 512

17.3.2 將消息記錄到當(dāng)前頁(yè)面 515

17.3.3 拋出錯(cuò)誤 515

17.4 常見的IE錯(cuò)誤 516

17.4.1 操作終止 516

17.4.2 無(wú)效字符 518

17.4.3 未找到成員 518

17.4.4 未知運(yùn)行時(shí)錯(cuò)誤 519

17.4.5 語(yǔ)法錯(cuò)誤 519

17.4.6 系統(tǒng)無(wú)法找到指定資源 519

17.5 小結(jié) 520

第18章 JavaScript與XML 521

18.1 瀏覽器對(duì)XMLDOM的支持 521

18.1.1 DOM2級(jí)核心 521

18.1.2 DOMParser類型 522

18.1.3 XMLSerializer類型 523

18.1.4 IE8及之前版本中的XML 523

18.1.5 跨瀏覽器處理XML 527

18.2 瀏覽器對(duì)XPath的支持 529

18.2.1 DOM3級(jí)XPath 529

18.2.2 IE中的XPath 534

18.2.3 跨瀏覽器使用XPath 535

18.3 瀏覽器對(duì)XSLT的支持 537

18.3.1 IE中的XSLT 537

18.3.2 XSLTProcessor類型 541

18.3.3 跨瀏覽器使用XSLT 543

18.4 小結(jié) 544

第19章 E4X 546

19.1 E4X的類型 546

19.1.1 XML類型 546

19.1.2 XMLList類型 547

19.1.3 Namespace類型 548

19.1.4 QName類型 549

19.2 一般用法 550

19.2.1 訪問(wèn)特性 551

19.2.2 其他節(jié)點(diǎn)類型 552

19.2.3 查詢 553

19.2.4 構(gòu)建和操作XML 555

19.2.5 解析和序列化 557

19.2.6 命名空間 558

19.3 其他變化 559

19.4 啟用E4X 560

19.5 小結(jié) 561

第20章 JSON 562

20.1 語(yǔ)法 562

20.1.1 簡(jiǎn)單值 562

20.1.2 對(duì)象 563

20.1.3 數(shù)組 564

20.2 解析與序列化 565

20.2.1 JSON對(duì)象 565

20.2.2 序列化選項(xiàng) 566

20.2.3 解析選項(xiàng) 569

20.3 小結(jié) 570

第21章 Ajax與Comet 571

21.1 XMLHttpRequest對(duì)象 571

21.1.1 XHR的用法 573

21.1.2 HTTP頭部信息 575

21.1.3 GET請(qǐng)求 576

21.1.4 POST請(qǐng)求 577

21.2 XMLHttpRequest2級(jí) 578

21.2.1 FormData 578

21.2.2 超時(shí)設(shè)定 579

21.2.3 overrideMimeType()方法 580

21.3 進(jìn)度事件 580

21.3.1 load事件 580

21.3.2 progress事件 581

21.4 跨源資源共享 582

21.4.1 IE對(duì)CORS的實(shí)現(xiàn) 582

21.4.2 其他瀏覽器對(duì)CORS的實(shí)現(xiàn) 584

21.4.3 PreflightedReqeusts 584

21.4.4 帶憑據(jù)的請(qǐng)求 585

21.4.5 跨瀏覽器的CORS 585

21.5 其他跨域技術(shù) 586

21.5.1 圖像Ping 586

21.5.2 JSONP 587

21.5.3 Comet 588

21.5.4 服務(wù)器發(fā)送事件 590

21.5.5 WebSockets 591

21.5.6 SS

在線預(yù)覽

JavaScript簡(jiǎn)介

本章內(nèi)容

JavaScript歷史回顧

JavaScript是什么

JavaScript與ECMAScript的關(guān)系

JavaScript的不同版本

avaScript誕生于1995年。當(dāng)時(shí),它的主要目的是處理以前由服務(wù)器端語(yǔ)言(如Perl)負(fù)責(zé)的一些輸入驗(yàn)證操作。在JavaScript問(wèn)世之前,必須把表單數(shù)據(jù)發(fā)送到服務(wù)器端才能確定用戶是否沒(méi)有填寫某個(gè)必填域,是否輸入了無(wú)效的值。Netscape Navigator希望通過(guò)JavaScript來(lái)解決這個(gè)問(wèn)題。在人們普遍使用電話拔號(hào)上網(wǎng)的年代,能夠在客戶端完成一些基本的驗(yàn)證任務(wù)是令人興奮的。畢竟,撥號(hào)上網(wǎng)的速度之慢,導(dǎo)致了與服務(wù)器的每一次數(shù)據(jù)交換事實(shí)上都成了對(duì)人們耐心的一次考驗(yàn)。

自此以后,JavaScript逐漸成為市面上常見瀏覽器必備的一項(xiàng)特色功能。如今,JavaScript的用途早已不再局限于簡(jiǎn)單的數(shù)據(jù)驗(yàn)證,而是具備了與瀏覽器窗口及其內(nèi)容等幾乎所有方面交互的能力。今天的JavaScript已經(jīng)成為一門功能的編程語(yǔ)言,能夠處理復(fù)雜的計(jì)算和交互,擁有了閉包、匿名(lamda,拉姆達(dá))函數(shù),甚至元編程等特性。作為Web的一個(gè)重要組成部分,JavaScript的重要性是不言而喻的,就連手機(jī)瀏覽器,甚至那些專為殘障人士設(shè)計(jì)的瀏覽器等非常規(guī)瀏覽器都支持它。當(dāng)然,微軟的例子更為典型。雖然有自己的客戶端腳本語(yǔ)言VBScript,但微軟仍然在Internet Explorer的早期版本中加入了自己的JavaScript實(shí)現(xiàn) 。

JavaScript從一個(gè)簡(jiǎn)單的輸入驗(yàn)證器發(fā)展成為一門強(qiáng)大的編程語(yǔ)言,出乎人們的意料。應(yīng)該說(shuō),它既是一門非常簡(jiǎn)單的語(yǔ)言,又是一門非常復(fù)雜的語(yǔ)言。說(shuō)它簡(jiǎn)單,是因?yàn)閷W(xué)會(huì)使用它只需片刻功夫;而說(shuō)它復(fù)雜,是因?yàn)橐嬲莆账鼊t需要數(shù)年時(shí)間。要想理解和掌握J(rèn)avaScript,關(guān)鍵在于弄清楚它的本質(zhì)、歷史和局限性。

1.1 JavaScript簡(jiǎn)史

在Web日益流行的同時(shí),人們對(duì)客戶端腳本語(yǔ)言的需求也越來(lái)越強(qiáng)烈。那個(gè)時(shí)候,絕大多數(shù)因特網(wǎng)用戶都使用速度僅為28.8kbit/s的“貓”(調(diào)制解調(diào)器)上網(wǎng),但網(wǎng)頁(yè)的大小和復(fù)雜性卻不斷增加。為完成簡(jiǎn)單的表單驗(yàn)證而頻繁地與服務(wù)器交換數(shù)據(jù)只會(huì)加重用戶的負(fù)擔(dān)。想象一下:用戶填寫完一個(gè)表單,單擊“提交”按鈕,然后等待30秒鐘,最終服務(wù)器返回消息說(shuō)有一個(gè)必填字段沒(méi)有填好……當(dāng)時(shí)走在技術(shù)革新最前沿的Netscape公司,決定著手開發(fā)一種客戶端語(yǔ)言,用來(lái)處理這種簡(jiǎn)單的驗(yàn)證。

當(dāng)時(shí)就職于Netscape公司的布蘭登?艾奇(Brendan Eich),開始著手為計(jì)劃于1995年2月的Netscape Navigator 2開發(fā)一種名為L(zhǎng)iveScript的腳本語(yǔ)言——該語(yǔ)言將同時(shí)在瀏覽器和服務(wù)器中使用(它在服務(wù)器上的名字叫LiveWire)。為了趕在日期前完成LiveScript的開發(fā),Netscape與Sun公司建立了一個(gè)開發(fā)聯(lián)盟。在Netscape Navigator 2正式前夕,Netscape為了搭上媒體熱炒Java的順風(fēng)車,臨時(shí)把LiveScript改名為JavaScript。

由于JavaScript 1.0獲得了巨大成功,Netscape隨即在Netscape Navigator 3中又了JavaScript 1.1。Web雖然羽翼未豐,但用戶關(guān)注度卻屢創(chuàng)新高。在這樣的背景下,Netscape把自己定位為市場(chǎng)領(lǐng)袖型公司。與此同時(shí),微軟決定向與Navigator競(jìng)爭(zhēng)的自家產(chǎn)品Internet Explorer瀏覽器投入更多資源。Netscape Navigator 3后不久,微軟就在其Internet Explorer 3中加入了名為JScript的JavaScript實(shí)現(xiàn)(命名為JScript是為了避開與Netscape有關(guān)的授權(quán)問(wèn)題)。以現(xiàn)在的眼光來(lái)看,微軟1996年8月為進(jìn)入Web瀏覽器領(lǐng)域而實(shí)施的這個(gè)重大舉措,是導(dǎo)致Netscape日后蒙羞的一個(gè)標(biāo)志性事件。然而,這個(gè)重大舉措同時(shí)也標(biāo)志著JavaScript作為一門語(yǔ)言,其開發(fā)向前邁進(jìn)了一大步。

微軟推出其JavaScript實(shí)現(xiàn)意味著有了3個(gè)不同的JavaScript版本:Netscape Navigator中的JavaScript、Internet Explorer中的Jscript和ScriptEase中的CEnvi。與C及其他編程語(yǔ)言不同,當(dāng)時(shí)還沒(méi)有標(biāo)準(zhǔn)規(guī)定JavaScript的語(yǔ)法和特性,3個(gè)不同版本并存的局面已經(jīng)暴露了這個(gè)問(wèn)題。隨著業(yè)界擔(dān)心的日益加劇,JavaScript的標(biāo)準(zhǔn)化問(wèn)題被提上了議事日程。

1997年,以JavaScript 1.1為藍(lán)本的建議被提交給了歐洲計(jì)算機(jī)制造商協(xié)會(huì)(Ecma,European Computer Manufacturers Association)。該協(xié)會(huì)指定39號(hào)技術(shù)委員會(huì)(TC39,Technical Committee #39)負(fù)責(zé)“標(biāo)準(zhǔn)化一種通用、跨平臺(tái)、供應(yīng)商中立的腳本語(yǔ)言的語(yǔ)法和語(yǔ)義”(www.ecma international.org/memento/TC39.htm)。TC39由來(lái)自Netscape、Sun、微軟、Borland及其他關(guān)注腳本語(yǔ)言發(fā)展的公司的程序員組成,他們經(jīng)過(guò)數(shù)月的努力完成了ECMA-262——定義一種名為ECMAScript(發(fā)音為“ek-ma-script”)的新腳本語(yǔ)言的標(biāo)準(zhǔn)。

第二年,ISO/IEC(International Organization for Standardization and International Electrotechnical Commission,國(guó)標(biāo)標(biāo)準(zhǔn)化組織和國(guó)際電工委員會(huì))也采用了ECMAScript作為標(biāo)準(zhǔn)(即ISO/IEC-16262)。自此以后,瀏覽器開發(fā)商就開始致力于將ECMAScript作為各自JavaScript實(shí)現(xiàn)的基礎(chǔ),也在不同程度上取得了成功。

1.2 JavaScript實(shí)現(xiàn)

雖然JavaScript和ECMAScript通常都被人們用來(lái)表達(dá)相同的含義,但JavaScript的含義卻比ECMA-262中規(guī)定的要多得多。沒(méi)錯(cuò),一個(gè)完整的JavaScript實(shí)現(xiàn)應(yīng)該由下列三個(gè)不同的部分組成(見圖1-1)。

核心(ECMAScript)

文檔對(duì)象模型(DOM)

瀏覽器對(duì)象模型(BOM)

1.2.1 ECMAScript

由ECMA-262定義的ECMAScript與Web瀏覽器沒(méi)有依賴關(guān)系。實(shí)際上,這門語(yǔ)言本身并不包含輸入和輸出定義。ECMA-262定義的只是這門語(yǔ)言的基礎(chǔ),而在此基礎(chǔ)之上可以構(gòu)建更完善的腳本語(yǔ)言。我們常見的Web瀏覽器只是ECMAScript實(shí)現(xiàn)可能的宿主環(huán)境之一。宿主環(huán)境不僅提供基本的ECMAScript實(shí)現(xiàn),同時(shí)也會(huì)提供該語(yǔ)言的擴(kuò)展,以便語(yǔ)言與環(huán)境之間對(duì)接交互。而這些擴(kuò)展——如DOM,則利用ECMAScript的核心類型和語(yǔ)法提供更多更具體的功能,以便實(shí)現(xiàn)針對(duì)環(huán)境的操作。前面介紹過(guò)的Node以及眾所周知的Adobe Flash也都是宿主環(huán)境。

既然ECMA-262標(biāo)準(zhǔn)沒(méi)有參照Web瀏覽器,那它都規(guī)定了些什么內(nèi)容呢?大致說(shuō)來(lái),它規(guī)定了這門語(yǔ)言的下列組成部分:

語(yǔ)法

類型

語(yǔ)句

關(guān)鍵字

保留字

操作符

對(duì)象

ECMAScript就是對(duì)實(shí)現(xiàn)該標(biāo)準(zhǔn)規(guī)定的各個(gè)方面內(nèi)容的語(yǔ)言的描述。JavaScript實(shí)現(xiàn)了ECMAScript,Adobe ActionScript同樣也實(shí)現(xiàn)了ECMAScript。

1. ECMAScript的版本

ECMAScript的不同版本又稱為版次,以第x版表示(意即描述特定實(shí)現(xiàn)的ECMA-262規(guī)范的第x個(gè)版本)。ECMA-262的最近一版是第5版,于2009年。而ECMA-262的第1版本質(zhì)上與Netscape的JavaScript 1.1相同——只不過(guò)刪除了所有針對(duì)瀏覽器的代碼并作了一些較小的改動(dòng):ECMA-262要求支持Unicode標(biāo)準(zhǔn)(從而支持多語(yǔ)言開發(fā)),而且對(duì)象也變成了平臺(tái)無(wú)關(guān)的(Netscape JavaScript 1.1的對(duì)象在不同平臺(tái)中的實(shí)現(xiàn)不一樣,例如Date對(duì)象)。這也是JavaScript 1.1和1.2與ECMA-262第1版不一致的主要原因。

ECMA-262第2版主要是編輯加工的結(jié)果。這一版中內(nèi)容的更新是為了與ISO/IEC-16262保持嚴(yán)格一致,沒(méi)有作任何新增、修改或刪節(jié)處理。因此,一般不使用第2版來(lái)衡量ECMAScript實(shí)現(xiàn)的兼容性。

ECMA-262第3版才是對(duì)該標(biāo)準(zhǔn)及時(shí)次真正的修改。修改的內(nèi)容涉及字符串處理、錯(cuò)誤定義和數(shù)值輸出。這一版還新增了對(duì)正則表達(dá)式、新控制語(yǔ)句、try-catch異常處理的支持,并圍繞標(biāo)準(zhǔn)的國(guó)際化做出了一些小的修改。從各方面綜合來(lái)看,第3版標(biāo)志著ECMAScript成為了一門真正的編程語(yǔ)言。

ECMA-262第4版對(duì)這門語(yǔ)言進(jìn)行了一次的檢核修訂。由于JavaScript在Web上日益流行,開發(fā)人員紛紛建議修訂ECMAScript,以使其能夠滿足不斷增長(zhǎng)的Web開發(fā)需求。作為回應(yīng),ECMA TC39重新召集相關(guān)人員共同謀劃這門語(yǔ)言的未來(lái)。結(jié)果,出臺(tái)后的標(biāo)準(zhǔn)幾乎在第3版基礎(chǔ)上定義了一門新語(yǔ)言。第4版不僅包含了強(qiáng)類型變量、新語(yǔ)句和新數(shù)據(jù)結(jié)構(gòu)、真正的類和經(jīng)典繼承,還定義了與數(shù)據(jù)交互的新方式。

與此同時(shí),TC39下屬的一個(gè)小組也提出了一個(gè)名為ECMAScript 3.1的替代性建議,該建議只對(duì)這門語(yǔ)言進(jìn)行了較少的改進(jìn)。這個(gè)小組認(rèn)為第4版給這門語(yǔ)言帶來(lái)的跨越太大了。因此,該小組建議對(duì)這門語(yǔ)言進(jìn)行小幅修訂,能夠在現(xiàn)有JavaScript引擎基礎(chǔ)上實(shí)現(xiàn)。最終,ES3.1附屬委員會(huì)獲得的支持超過(guò)了TC39,ECMAS-262第4版在正式前被放棄。

ECMAScript 3.1成為ECMA-262第5版,并于2009年12月3日正式。第5版力求澄清第3版中已知的歧義并增添了新的功能。新功能包括原生JSON對(duì)象(用于解析和序列化JSON數(shù)據(jù))、繼承的方法和高級(jí)屬性定義,另外還包含一種嚴(yán)格模式,對(duì)ECMAScript引擎解釋和執(zhí)行代碼進(jìn)行了補(bǔ)充說(shuō)明。

2. 什么是ECMAScript兼容

ECMA-262給出了ECMAScript兼容的定義。要想成為ECMAScript的實(shí)現(xiàn),則該實(shí)現(xiàn)必須做到:

支持ECMA-262描述的所有“類型、值、對(duì)象、屬性、函數(shù)以及程序句法和語(yǔ)義”(ECMA-262第1頁(yè));

支持Unicode字符標(biāo)準(zhǔn)。

此外,兼容的實(shí)現(xiàn)還可以進(jìn)行下列擴(kuò)展。

添加ECMA-262沒(méi)有描述的“更多類型、值、對(duì)象、屬性和函數(shù)”。ECMA-262所說(shuō)的這些新增特性,主要是指該標(biāo)準(zhǔn)中沒(méi)有規(guī)定的新對(duì)象和對(duì)象的新屬性。

支持ECMA-262沒(méi)有定義的“程序和正則表達(dá)式語(yǔ)法”。(也就是說(shuō),可以修改和擴(kuò)展內(nèi)置的正則表達(dá)式語(yǔ)法。)

上述要求為兼容實(shí)現(xiàn)的開發(fā)人員基于ECMAScript開發(fā)一門新語(yǔ)言提供了廣闊的空間和極大的靈活性,這也從另一個(gè)側(cè)面說(shuō)明了ECMAScript受開發(fā)人員歡迎的原因。

3. Web瀏覽器對(duì)ECMAScript的支持

1996年,Netscape Navigator 3捆綁了JavaScript 1.1。而相同的JavaScript 1.1設(shè)計(jì)規(guī)范隨后作為對(duì)新標(biāo)準(zhǔn)(ECMA-262)的建議被提交給Ecma。伴隨著JavaScript的迅速走紅,Netscape豪情滿懷地著手開發(fā)JavaScript 1.2。然而,問(wèn)題是Ecma當(dāng)時(shí)還沒(méi)有接受Netscape的建議。

Netscape Navigator 3后不久,微軟也推出了Internet Explorer 3。微軟在IE的這一版中捆綁了JScript 1.0,很多人都認(rèn)為JScript 1.0與JavaScript 1.1應(yīng)該是一樣的。但是,由于沒(méi)有文檔依據(jù),加之不適當(dāng)?shù)奶匦阅7拢琂Script 1.0還是很難與JavaScript 1.1相提并論。

1997年,內(nèi)置JavaScript 1.2的Netscape Navigator 4;而到這一年年底,ECMA-262第1版也被接受并實(shí)現(xiàn)了標(biāo)準(zhǔn)化。結(jié)果,雖然ECMAScript被認(rèn)為是基于JavaScript 1.1制定的,但JavaScript 1.2與ECMAScript的第1版并不兼容。

JScript的升級(jí)版是Internet Explorer 4中內(nèi)置的JScript 3.0(隨同微軟IIS 3.0的JScript 2.0從來(lái)也沒(méi)有移植到瀏覽器中)。微軟通過(guò)媒體大肆宣傳JScript 3.0是世界上及時(shí)個(gè)ECMA兼容的腳本語(yǔ)言,但當(dāng)時(shí)的ECMA-262尚未定稿。于是,JScript 3.0與JavaScript 1.2都遭遇了相同的尷尬局面——誰(shuí)都沒(méi)有按照最終的ECMAScript標(biāo)準(zhǔn)來(lái)實(shí)現(xiàn)。

Netscape決定更新其JavaScript實(shí)現(xiàn),即在Netscape Navigator 4.06中JavaScript 1.3,從而做到了與ECMA-262的及時(shí)個(gè)版本兼容。在JavaScript 1.3中,Netscape增加了對(duì)Unicode標(biāo)準(zhǔn)的支持,并在保留JavaScript 1.2新增特性的同時(shí)實(shí)現(xiàn)了所有對(duì)象的平臺(tái)中立化。

在Netscape以Mozilla項(xiàng)目的名義開放其源代碼時(shí),預(yù)期JavaScript 1.4將隨同Netscape Navigator 5一道。然而,一個(gè)激進(jìn)的決定,徹底重新設(shè)計(jì)Netscape代碼,打亂了原有計(jì)劃。后來(lái),JavaScript 1.4只了針對(duì)Netscape Enterprise Server的服務(wù)器版,而沒(méi)有內(nèi)置于Web瀏覽器中。

到了2008年,五大主流Web瀏覽器(IE、Firefox、Safari、Chrome和Opera)全部做到了與ECMA-262兼容。IE8是及時(shí)個(gè)著手實(shí)現(xiàn)ECMA-262第5版的瀏覽器,并在IE9中提供了完整的支持。Firefox 4也緊隨其后做到兼容。下表列出了ECMAScript受主流Web瀏覽器支持的情況。

瀏 覽 器 ECMAScript兼容性 瀏 覽 器 ECMAScript兼容性

Netscape Navigator 2 — Opera 6~7.1 第2版

Netscape Navigator 3 — Opera 7.2 第3版

Netscape Navigator 4~4.05 — Safari 1~2.0.x 第3版

Netscape Navigator 4.06~4.79 第1版 Safari 3.x 第3版

Netscape 6 (Mozilla 0.6.0 ) 第3版 Safari 4.x~5.x 第5版

IE3 — Chrome 1 第3版

IE4 — Firefox 1~2 第3版

IE5 第1版 Firefox 3.0.x 第3版

IE5.5~I(xiàn)E7 第3版 Firefox 3.5~3.6 第5版

IE8 第5版 Firefox 4.0 第5版

IE9 第5版

不兼容的實(shí)現(xiàn)

1.2.2 文檔對(duì)象模型(DOM)

文檔對(duì)象模型(DOM,Document Object Model)是針對(duì)XML但經(jīng)過(guò)擴(kuò)展用于HTML的應(yīng)用程序編程接口(API,Application Programming Interface)。DOM把整個(gè)頁(yè)面映射為一個(gè)多層節(jié)點(diǎn)結(jié)構(gòu)。HTML或XML頁(yè)面中的每個(gè)組成部分都是某種類型的節(jié)點(diǎn),這些節(jié)點(diǎn)又包含著不同類型的數(shù)據(jù)。看下面這個(gè)HTML頁(yè)面:

Hello World!

在DOM中,這個(gè)頁(yè)面可以通過(guò)見圖1-2所示的分層節(jié)點(diǎn)圖表示。

通過(guò)DOM創(chuàng)建的這個(gè)表示文檔的樹形圖,開發(fā)人員獲得了控制頁(yè)面內(nèi)容和結(jié)構(gòu)的主動(dòng)權(quán)。借助DOM提供的API,開發(fā)人員可以輕松自如地刪除、添加、替換或修改任何節(jié)點(diǎn)。

1. 為什么要使用DOM

在Internet Explorer 4和Netscape Navigator 4分別支持的不同形式的DHTML(Dynamic HTML)基礎(chǔ)上,開發(fā)人員首次無(wú)需重新加載網(wǎng)頁(yè),就可以修改其外觀和內(nèi)容了。然而,DHTML在給Web技術(shù)發(fā)展帶來(lái)巨大進(jìn)步的同時(shí),也帶來(lái)了巨大的問(wèn)題。由于Netscape和微軟在開發(fā)DHTML方面各持己見,過(guò)去那個(gè)只編寫一個(gè)HTML頁(yè)面就能夠在任何瀏覽器中運(yùn)行的時(shí)代結(jié)束了。

對(duì)開發(fā)人員而言,如果想繼續(xù)保持Web跨平臺(tái)的天性,就必須額外多做一些工作。而人們真正擔(dān)心的是,如果不對(duì)Netscapet和微軟加以控制,Web開發(fā)領(lǐng)域就會(huì)出現(xiàn)技術(shù)上兩強(qiáng)割據(jù),瀏覽器互不兼容的局面。此時(shí),負(fù)責(zé)制定Web通信標(biāo)準(zhǔn)的W3C(World Wide Web Consortium,萬(wàn)維網(wǎng)聯(lián)盟)開始著手規(guī)劃DOM。

圖 1-2

2. DOM級(jí)別

DOM1級(jí)(DOM Level 1)于1998年10月成為W3C的推薦標(biāo)準(zhǔn)。DOM1級(jí)由兩個(gè)模塊組成:DOM核心(DOM Core)和DOM HTML。其中,DOM核心規(guī)定的是如何映射基于XML的文檔結(jié)構(gòu),以便簡(jiǎn)化對(duì)文檔中任意部分的訪問(wèn)和操作。DOM HTML模塊則在DOM核心的基礎(chǔ)上加以擴(kuò)展,添加了針對(duì)HTML的對(duì)象和方法。

請(qǐng)讀者注意,DOM并不只是針對(duì)JavaScript的,很多別的語(yǔ)言也都實(shí)現(xiàn)了DOM。不過(guò),在Web瀏覽器中,基于ECMAScript實(shí)現(xiàn)的DOM的確已經(jīng)成為JavaScript這門語(yǔ)言的一個(gè)重要組成部分。

如果說(shuō)DOM1級(jí)的目標(biāo)主要是映射文檔的結(jié)構(gòu),那么DOM2級(jí)的目標(biāo)就要寬泛多了。DOM2級(jí)在原來(lái)DOM的基礎(chǔ)上又?jǐn)U充了(DHTML一直都支持的)鼠標(biāo)和用戶界面事件、范圍、遍歷(迭代DOM文檔的方法)等細(xì)分模塊,而且通過(guò)對(duì)象接口增加了對(duì)CSS(Cascading Style Sheets,層疊樣式表)的支持。DOM1級(jí)中的DOM核心模塊也經(jīng)過(guò)擴(kuò)展開始支持XML命名空間。

DOM2級(jí)引入了下列新模塊,也給出了眾多新類型和新接口的定

媒體評(píng)論

一幅濃墨重彩的語(yǔ)言畫卷,一部推陳出新的技術(shù)名著

全能前端人員必讀之經(jīng)典,知識(shí)更新必備之佳作。

網(wǎng)友評(píng)論(不代表本站觀點(diǎn))

來(lái)自無(wú)昵稱**的評(píng)論:

是正版,學(xué)習(xí)JavaScript的經(jīng)典書目,適合入門,中級(jí)水平的人閱讀。大促時(shí)購(gòu)買的,很劃算

2016-04-25 00:17:10
來(lái)自菜鳥瞰**的評(píng)論:

javascript最透徹的一部經(jīng)典。不可錯(cuò)過(guò)。帶你深入游覽javascript的世界。對(duì)于要深入學(xué)習(xí)javascript的人,有巨大裨益。至于初學(xué)者或者想簡(jiǎn)單了解js的人,這部書的內(nèi)容有點(diǎn)豐富。

2013-05-27 21:37:27
來(lái)自will565**的評(píng)論:

第二次買技術(shù)書,第一次買這么厚的書…看得我好芳…理論性好強(qiáng),有些術(shù)語(yǔ)根本沒(méi)聽過(guò)看過(guò),看來(lái)要學(xué)好還是得看點(diǎn)書,懂點(diǎn)理論…當(dāng)然操作也必不可少…這本書 我覺得至少要看兩遍額…

2016-04-22 23:09:57
來(lái)自儺舞者**的評(píng)論:

收到書,我笑了,感覺和自己在學(xué)校打印的畢業(yè)設(shè)計(jì)的紙質(zhì)一模一樣的,也許是我太久沒(méi)看紙質(zhì)書了,也許現(xiàn)在的印刷用紙都是這樣子的,和我前二年買的PHP圣經(jīng)和JS犀牛書紙質(zhì)完全不一樣,不過(guò)我是沖著內(nèi)容買的,這個(gè)可以接受。

2014-06-10 19:09:11
來(lái)自匿名用**的評(píng)論:

書感覺還是不錯(cuò),很厚的一本,收到翻看了里面的內(nèi)容,覺得這就是我需要的書,買了決不會(huì)后悔,內(nèi)容很豐富同時(shí)也不是繁瑣的去探究底層的,感覺不錯(cuò)

2017-07-18 21:54:25
來(lái)自無(wú)昵稱**的評(píng)論:

javascript的經(jīng)典讀物,內(nèi)容排列合理,代碼實(shí)例很多。不論是初學(xué)者還是有一定javascript編程經(jīng)驗(yàn)的人都能從中收益。圖靈的編程書就是牛。

2016-05-21 20:36:22
來(lái)自馬克200**的評(píng)論:

非常喜歡這個(gè)作者,想買他的《高性能Javascript》可惜沒(méi)貨了。JavaScript高級(jí)程序設(shè)計(jì),以前買過(guò)這本書的第一版,但發(fā)現(xiàn)第三版變化很大,覺得入手一本!

2013-01-28 18:34:09
來(lái)自無(wú)昵稱**的評(píng)論:

之前買了一本權(quán)威指南了,現(xiàn)在有入手一本高級(jí)編程,兩本一起讀,書很好,喜歡JavaScript,并希望自己從入門變成精通

2017-08-01 13:53:24
來(lái)自L***l(**的評(píng)論:

JavaScript高級(jí)程序設(shè)計(jì) 這本買錯(cuò)了= =

2017-06-08 15:07:06
來(lái)自陶吉訶**的評(píng)論:

前端開發(fā)一定要看,前端開發(fā)一定要看,前端開發(fā)一定要看,重要的事情說(shuō)三遍,從頭到尾都是精華,滿滿的知識(shí)點(diǎn),真的像網(wǎng)上說(shuō)的一樣,前端開發(fā)應(yīng)該看三遍,也不為過(guò)。推薦推薦

2016-08-03 15:03:16
來(lái)自無(wú)昵稱**的評(píng)論:

只問(wèn)一個(gè)問(wèn)題,這是正版嗎?為什么紙質(zhì)看起來(lái)泛黑,而且很薄。我是買來(lái)送人的,這怎么拿出手……覺得這個(gè)價(jià)錢有些不值,原本是信賴當(dāng)當(dāng)網(wǎng),書的話就沒(méi)在其他網(wǎng)站買,結(jié)果讓人有些失望。

2016-06-04 10:45:21
來(lái)自艾喲123**的評(píng)論:

js這本書感覺很不錯(cuò),紙張也不錯(cuò),印刷也好,還沒(méi)看,不知道內(nèi)容怎樣。換購(gòu)的一本ps app的書真心的差,紙質(zhì)很差,二十幾呢說(shuō)滴,還很丑,看了一分鐘熏腦子,建議大家千萬(wàn)不要換購(gòu)!!!!像甲醛一樣!

2015-10-10 17:16:57
來(lái)自無(wú)昵稱**的評(píng)論:

我建議這本書等你對(duì)JavaScript有足夠的認(rèn)識(shí),基本入門以后再來(lái)看,不然這么夠的書,你看不懂時(shí)會(huì)覺得厭煩,當(dāng)你入門時(shí),閱讀起來(lái)有一陣陣驚喜!

2015-12-14 15:35:17
來(lái)自無(wú)昵稱**的評(píng)論:

怎么評(píng)論,書只有大家看了才知道好不好,看了或許也不知道,只有用了才知道,用了也有可能不知道好不好,只有找工作的時(shí)候被面試官問(wèn)到才算好,總之最后能通過(guò)這本書拿到高薪才是好。

2016-08-15 13:26:46
來(lái)自無(wú)昵稱**的評(píng)論:

真的是本好書,從基礎(chǔ)到高級(jí),講解十分詳細(xì),案例也很清晰,從底層到高層都很明了。書本印刷質(zhì)量很高,厚厚的一本,等我看完一定很有成就感。如果每章能夠加上一些練習(xí)題就更好了。

2016-11-30 17:44:57
來(lái)自無(wú)昵稱**的評(píng)論:

第一次在在當(dāng)當(dāng)買書,無(wú)錫到蘇州,下單的時(shí)候顯示當(dāng)天送達(dá),最后第三天才送到。顯示發(fā)貨,最后詢問(wèn)的時(shí)候卻說(shuō)是因?yàn)闆](méi)有貨才會(huì)晚。書本身出來(lái)包裝一般外沒(méi)什么好說(shuō)的,只是這個(gè)物流感覺有待改善。

2016-08-01 09:30:30
來(lái)自匿名用**的評(píng)論:

書收到了 紙質(zhì)不錯(cuò)的是正版 大概看了一下還沒(méi)有印刷錯(cuò)誤 但是.. 這本書拿到手后想起來(lái)前幾天在圖書館看到過(guò)可以借閱的 尷尬了 好好學(xué)習(xí) 留下一本以后做代碼的時(shí)候常常查看也不錯(cuò)的

2017-05-27 22:55:08
來(lái)自白馬灰**的評(píng)論:

圖靈的書看著很親切,這本書適合有一定JS基礎(chǔ)渴望在此基礎(chǔ)上有新的突破的人士使用,知識(shí)點(diǎn)比較多,記起來(lái)不容易啊,在瀏覽器兼容方面講的也比較詳細(xì),重點(diǎn)在記憶阿在記憶,用了半年了,技術(shù)上有提高,現(xiàn)在來(lái)來(lái)回回看了有兩遍了,要想掌握的很好,十遍是少不了的。

2016-11-21 12:42:14
來(lái)自無(wú)昵稱**的評(píng)論:

老師推薦的書,快遞很給力,昨天下午兩點(diǎn)半提交的訂單,今天十二點(diǎn)一十五分就到貨了。但是一拿到貨,裝書的紙皮就破破爛爛的了,側(cè)面已經(jīng)開了,于是我將書拿出,不過(guò)還好,數(shù)量沒(méi)有少。書的具體內(nèi)容還沒(méi)有看,慢慢研究吧,望能在此書中受益,不斷進(jìn)步。

2015-12-13 14:49:19
來(lái)自ironmk**的評(píng)論:

這本書不用說(shuō)了,高級(jí)程序設(shè)計(jì),現(xiàn)在還看不懂,新手先認(rèn)真鞏固基礎(chǔ)知識(shí)吧,包裝很好,書很新,價(jià)格還算可以,外國(guó)人出版的編程書必定不錯(cuò)的,思維什么的都很嚴(yán)謹(jǐn)

2016-11-21 14:42:58
來(lái)自無(wú)昵稱**的評(píng)論:

這真的是最經(jīng)典的JavaScript書,第二次看,還是感嘆其中的思想,很多直擊JavaScript的核心,但是需要你自己有很扎實(shí)的基本功,也確實(shí)如同很多人所講,它真的不是一本入門書。

2016-11-15 09:01:22
來(lái)自不老傳**的評(píng)論:

經(jīng)典就是經(jīng)典,買過(guò)的這么多書當(dāng)中,算是讀得最認(rèn)真、讀的次數(shù)最多的一本了,每一次重新閱讀總能收獲不少東西,整書都非常通俗易懂。讀完又工作一段時(shí)間實(shí)踐后再來(lái)看一下,會(huì)更加深入的理解書里面講的知識(shí)點(diǎn)。 不可多得的JS教程,32個(gè)贊~~~

2016-11-01 21:53:58

免責(zé)聲明

更多出版社