JavaScript高级程序设计(第3版)
查字典图书网
当前位置: 查字典 > 图书网 > 编程> JavaScript高级程序设计(第3版)

JavaScript高级程序设计(第3版)

JavaScript高级程序设计(第3版)

9.3

作者: [美] Nicholas C·Zakas
出版社: 人民邮电出版社
原作名: Professional JavaScript for Web
译者: 曹 力  |  李松峰
出版年: 2012-3-29
页数: 748
定价: 99.00元
装帧: 平装
丛书: 图灵程序设计丛书
ISBN: 9787115275790

我要收藏

内容简介:

本书是JavaScript 超级畅销书的最新版。ECMAScript 5 和HTML5 在标准之争中双双胜出,使大量专有实现和客户端扩展正式进入规范,同时也为JavaScript 增添了很多适应未来发展的新特性。本书这一版除增加5 章全新内容外,其他章节也有较大幅度的增补和修订,新内容篇幅约占三分之一。全书从JavaScript 语言实现的各个组成部分——语言核心、DOM、BOM、事件模型讲起,深入浅出地探讨了面向对象编程、Ajax 与Comet 服务器端通信,HTML5 表单、媒体、Canvas(包括WebGL)及Web Workers、地理定位、跨文档传递消息、客户端存储(包括IndexedDB)等新API,还介绍了离线应用和与维护、性能、部署相关的最佳开发实践。本书附录展望了未来的API 和ECMAScript Harmony 规范。

本书适合有一定编程经验的Web 应用开发人员阅读,也可作为高校及社会实用技术培训相关专业课程的教材。

作者简介:

作者简介:

Nicholas C. Zakas(尼古拉斯•泽卡斯)世界顶级Web技术专家,现为雅虎公司界面呈现架构师,负责My Yahoo!和雅虎首页等大访问量站点的设计。尼古拉斯拥有丰富的Web开发和界面设计经验,曾经参与许多世界级大公司的Web解决方案开发。他还是High Performance JavaScript一书的作者,并与他人合作撰写了Professional Ajax和Even Faster Web Sites。尼古拉斯拥有梅里马克学院计算机科学学士学位和埃迪柯特学院的MBA学位。他的个人网站是www.nczonline.net,他的Twitter别名是@slicknet。

目录:

目录

第1章 JavaScript简介1

1.1 JavaScript简史1

1.2 JavaScript实现2

1.2.1 ECMAScript3

1.2.2 文档对象模型(DOM)5

1.2.3 浏览器对象模型(BOM)8

1.3 JavaScript版本8

1.4 小结9

第2章 在HTML中使用JavaScript10

2.1 <script>元素10

2.1.1 标签的位置12

2.1.2 延迟脚本13

2.1.3 异步脚本13

2.1.4 在XHTML中的用法14

2.1.5 不推荐使用的语法16

2.2 嵌入代码与外部文件16

2.3 文档模式16

2.4 <noscript>元素18

2.5 小结18

第3章 基本概念19

3.1 语法19

3.1.1 区分大小写19

3.1.2 标识符19

3.1.3 注释20

3.1.4 严格模式20

3.1.5 语句20

3.2 关键字和保留字21

3.3 变量22

3.4 数据类型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 关系操作符50

3.5.7 相等操作符51

3.5.8 条件操作符53

3.5.9 赋值操作符53

3.5.10 逗号操作符54

3.6 语句54

3.6.1 if语句54

3.6.2 do-while语句55

3.6.3 while语句55

3.6.4 for语句56

3.6.5 for-in语句57

3.6.6 label语句58

3.6.7 break和continue语句58

3.6.8 with语句60

3.6.9 switch语句60

3.7 函数62

3.7.1 理解参数64

3.7.2 没有重载66

3.8 小结67

第4章 变量、作用域和内存问题68

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

4.1.1 动态的属性68

4.1.2 复制变量值69

4.1.3 传递参数70

4.1.4 检测类型72

4.2 执行环境及作用域73

4.2.1 延长作用域链75

4.2.2 没有块级作用域76

4.3 垃圾收集78

4.3.1 标记清除78

4.3.2 引用计数79

4.3.3 性能问题80

4.3.4 管理内存81

4.4 小结81

第5章 引用类型83

5.1 Object类型83

5.2 Array类型86

5.2.1 检测数组88

5.2.2 转换方法89

5.2.3 栈方法90

5.2.4 队列方法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 日期/时间组件方法102

5.4 RegExp类型103

5.4.1 RegExp实例属性105

5.4.2 RegExp实例方法106

5.4.3 RegExp构造函数属性107

5.4.4 模式的局限性109

5.5 Function类型110

5.5.1 没有重载(深入理解)111

5.5.2 函数声明与函数表达式111

5.5.3 作为值的函数112

5.5.4 函数内部属性113

5.5.5 函数属性和方法116

5.6 基本包装类型118

5.6.1 Boolean类型120

5.6.2 Number类型120

5.6.3 String类型122

5.7 单体内置对象130

5.7.1 Global对象131

5.7.2 Math对象134

5.8 小结137

第6章 面向对象的程序设计138

6.1 理解对象138

6.1.1 属性类型139

6.1.2 定义多个属性142

6.1.3 读取属性的特性143

6.2 创建对象144

6.2.1 工厂模式144

6.2.2 构造函数模式144

6.2.3 原型模式147

6.2.4 组合使用构造函数模式和原型模式159

6.2.5 动态原型模式159

6.2.6 寄生构造函数模式160

6.2.7 稳妥构造函数模式161

6.3 继承162

6.3.1 原型链162

6.3.2 借用构造函数167

6.3.3 组合继承168

6.3.4 原型式继承169

6.3.5 寄生式继承171

6.3.6 寄生组合式继承172

6.4 小结174

第7章 函数表达式175

7.1 递归177

7.2 闭包178

7.2.1 闭包与变量181

7.2.2 关于this对象182

7.2.3 内存泄漏183

7.3 模仿块级作用域184

7.4 私有变量186

7.4.1 静态私有变量188

7.4.2 模块模式189

7.4.3 增强的模块模式191

7.5 小结192

第8章 BOM193

8.1 window对象193

8.1.1 全局作用域193

8.1.2 窗口关系及框架194

8.1.3 窗口位置197

8.1.4 窗口大小198

8.1.5 导航和打开窗口199

8.1.6 间歇调用和超时调用203

8.1.7 系统对话框205

8.2 location对象207

8.2.1 查询字符串参数207

8.2.2 位置操作208

8.3 navigator对象210

8.3.1 检测插件211

8.3.2 注册处理程序213

8.4 screen对象214

8.5 history对象215

8.6 小结216

第9章 客户端检测217

9.1 能力检测217

9.1.1 更可靠的能力检测218

9.1.2 能力检测,不是浏览器检测220

9.2 怪癖检测220

9.3 用户代理检测221

9.3.1 用户代理字符串的历史222

9.3.2 用户代理字符串检测技术228

9.3.3 完整的代码242

9.3.4 使用方法245

9.4 小结246

第10章 DOM247

10.1 节点层次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操作技术277

10.2.1 动态脚本277

10.2.2 动态样式279

10.2.3 操作表格281

10.2.4 使用NodeList283

10.3 小结284

第11章 DOM扩展286

11.1 选择符API286

11.1.1 querySelector()方法286

11.1.2 querySelectorAll()

方法287

11.1.3 matchesSelector()

方法288

11.2 元素遍历288

11.3 HTML5289

11.3.1 与类相关的扩充289

11.3.2 焦点管理291

11.3.3 HTMLDocument的变化292

11.3.4 字符集属性293

11.3.5 自定义数据属性293

11.3.6 插入标记294

11.3.7 scrollIntoView()方法298

11.4 专有扩展298

11.4.1 文档模式298

11.4.2 children属性299

11.4.3 contains()方法300

11.4.4 插入文本301

11.4.5 滚动303

11.5 小结304

第12章 DOM2和DOM3305

12.1 DOM变化305

12.1.1 针对XML命名空间的变化306

12.1.2 其他方面的变化309

12.2 样式312

12.2.1 访问元素的样式313

12.2.2 操作样式表317

12.2.3 元素大小320

12.3 遍历326

12.3.1 NodeIterator328

12.3.2 TreeWalker330

12.4 范围332

12.4.1 DOM中的范围332

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

12.5 小结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级事件处理程序350

13.2.3 DOM2级事件处理程序351

13.2.4 IE事件处理程序352

13.2.5 跨浏览器的事件处理程序353

13.3 事件对象355

13.3.1 DOM中的事件对象355

13.3.2 IE中的事件对象358

13.3.3 跨浏览器的事件对象360

13.4 事件类型362

13.4.1 UI事件362

13.4.2 焦点事件367

13.4.3 鼠标与滚轮事件368

13.4.4 键盘与文本事件379

13.4.5 复合事件384

13.4.6 变动事件385

13.4.7 HTML5事件388

13.4.8 设备事件395

13.4.9 触摸与手势事件399

13.5 内存和性能402

13.5.1 事件委托402

13.5.2 移除事件处理程序404

13.6 模拟事件405

13.6.1 DOM中的事件模拟405

13.6.2 IE中的事件模拟410

13.7 小结411

第14章 表单脚本412

14.1 表单的基础知识412

14.1.1 提交表单413

14.1.2 重置表单414

14.1.3 表单字段414

14.2 文本框脚本419

14.2.1 选择文本420

14.2.2 过滤输入423

14.2.3 自动切换焦点426

14.2.4 HTML5约束验证API427

14.3 选择框脚本431

14.3.1 选择选项432

14.3.2 添加选项434

14.3.3 移除选项435

14.3.4 移动和重排选项435

14.4 表单序列化436

14.5 富文本编辑438

14.5.1 使用contenteditable

属性438

14.5.2 操作富文本439

14.5.3 富文本选区441

14.5.4 表单与富文本443

14.6 小结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 使用图像数据460

15.2.11 合成462

15.3 WebGL463

15.3.1 类型化数组463

15.3.2 WebGL上下文468

15.3.3 支持478

15.4 小结478

第16章 HTML5脚本编程480

16.1 跨文档消息传递480

16.2 原生拖放481

16.2.1 拖放事件482

16.2.2 自定义放置目标482

16.2.3 dataTransfer对象483

16.2.4 dropEffect与effectAllowed484

16.2.5 可拖动485

16.2.6 其他成员485

16.3 媒体元素486

16.3.1 属性487

16.3.2 事件488

16.3.3 自定义媒体播放器488

16.3.4 检测编解码器的支持情况489

16.3.5 Audio类型490

16.4 历史状态管理491

16.5 小结492

第17章 错误处理与调试493

17.1 浏览器报告的错误493

17.1.1 IE493

17.1.2 Firefox494

17.1.3 Safari496

17.1.4 Opera497

17.1.5 Chrome498

17.2 错误处理499

17.2.1 try-catch语句500

17.2.2 抛出错误503

17.2.3 错误(error)事件505

17.2.4 处理错误的策略506

17.2.5 常见的错误类型507

17.2.6 区分致命错误和非致命

错误510

17.2.7 把错误记录到服务器511

17.3 调试技术512

17.3.1 将消息记录到控制台512

17.3.2 将消息记录到当前页面515

17.3.3 抛出错误515

17.4 常见的IE错误516

17.4.1 操作终止516

17.4.2 无效字符518

17.4.3 未找到成员518

17.4.4 未知运行时错误519

17.4.5 语法错误519

17.4.6 系统无法找到指定资源519

17.5 小结520

第18章 JavaScript与XML521

18.1 浏览器对XML DOM的支持521

18.1.1 DOM2级核心521

18.1.2 DOMParser类型522

18.1.3 XMLSerializer类型523

18.1.4 IE8及之前版本中的XML523

18.1.5 跨浏览器处理XML527

18.2 浏览器对XPath的支持529

18.2.1 DOM3级XPath529

18.2.2 IE中的XPath534

18.2.3 跨浏览器使用XPath535

18.3 浏览器对XSLT的支持537

18.3.1 IE中的XSLT537

18.3.2 XSLTProcessor类型541

18.3.3 跨浏览器使用XSLT543

18.4 小结544

第19章 E4X546

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 访问特性551

19.2.2 其他节点类型552

19.2.3 查询553

19.2.4 构建和操作XML555

19.2.5 解析和序列化557

19.2.6 命名空间558

19.3 其他变化559

19.4 全面启用E4X560

19.5 小结561

第20章 JSON562

20.1 语法562

20.1.1 简单值562

20.1.2 对象563

20.1.3 数组564

20.2 解析与序列化565

20.2.1 JSON对象565

20.2.2 序列化选项566

20.2.3 解析选项569

20.3 小结570

第21章 Ajax与Comet571

21.1 XMLHttpRequest对象571

21.1.1 XHR的用法573

21.1.2 HTTP头部信息575

21.1.3 GET请求576

21.1.4 POST请求577

21.2 XMLHttpRequest 2级578

21.2.1 FormData578

21.2.2 超时设定579

21.2.3 overrideMimeType()

方法580

21.3 进度事件580

21.3.1 load事件580

21.3.2 progress事件581

21.4 跨源资源共享582

21.4.1 IE对CORS的实现582

21.4.2 其他浏览器对CORS的

实现584

21.4.3 Preflighted Reqeusts584

21.4.4 带凭据的请求585

21.4.5 跨浏览器的CORS585

21.5 其他跨域技术586

21.5.1 图像Ping586

21.5.2 JSONP587

21.5.3 Comet588

21.5.4 服务器发送事件590

21.5.5 Web Sockets591

21.5.6 SSE与Web Sockets593

21.6 安全593

21.7 小结594

第22章 高级技巧596

22.1 高级函数596

22.1.1 安全的类型检测596

22.1.2 作用域安全的构造函数597

22.1.3 惰性载入函数600

22.1.4 函数绑定602

22.1.5 函数柯里化604

22.2 防篡改对象606

22.2.1 不可扩展对象606

22.2.2 密封的对象607

22.2.3 冻结的对象608

22.3 高级定时器609

22.3.1 重复的定时器610

22.3.2 Yielding Processes612

22.3.3 函数节流614

22.4 自定义事件616

22.5 拖放618

22.5.1 修缮拖动功能620

22.5.2 添加自定义事件622

22.6 小结624

第23章 离线应用与客户端存储626

23.1 离线检测626

23.2 应用缓存627

23.3 数据存储628

23.3.1 Cookie629

23.3.2 IE用户数据637

23.3.3 Web存储机制638

23.3.4 IndexedDB643

23.4 小结654

第24章 最佳实践656

24.1 可维护性656

24.1.1 什么是可维护的代码656

24.1.2 代码约定657

24.1.3 松散耦合659

24.1.4 编程实践662

24.2 性能666

24.2.1 注意作用域666

24.2.2 选择正确方法667

24.2.3 最小化语句数672

24.2.4 优化DOM交互673

24.3 部署676

24.3.1 构建过程676

24.3.2 验证677

24.3.3 压缩679

24.4 小结681

第25章 新兴的API682

25.1 requestAnimationFrame()682

25.1.1 早期动画循环682

25.1.2 循环间隔的问题683

25.1.3 mozRequestAnimation-Frame683

25.1.4 webkitRequestAnima-tionFrame与msRequest-AnimationFrame685

25.2 Page Visibility API686

25.3 Geolocation API687

25.4 File API689

25.4.1 FileReader类型690

25.4.2 读取部分内容692

25.4.3 对象URL693

25.4.4 读取拖放的文件694

25.4.5 使用XHR上传文件695

25.5 Web计时696

25.6 Web Workers697

25.6.1 使用Worker697

25.6.2 Worker全局作用域698

25.6.3 包含其他脚本699

25.6.4 Web Workers的未来700

25.7 小结700

附录A ECMAScript Harmony701

附录B 严格模式717

附录C JavaScript库723

附录D JavaScript工具727

文章试读:在HTML中使用JavaScript 本章内容 使用<script>元素 嵌入脚本与外部脚本 文档模式对JavaScript的影响 考虑禁用JavaScript的场景 只 要一提到把JavaScript放到网页中,就不得不涉及Web的核心语言——HTML。在当初开发JavaScript的时候,Netscape要解决的一个重要问题就是如何做到让JavaScript既能与...

(查看全部试读)

展开全文
随机来一本书

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

热门标签:
我想说两句
暂无评论
我要写长评
 想读     在读     读过   
评价:
标签(多个标签以“,”分开):