作品介绍

JavaScript高级程序设计


作者:[美]NicholasC.Zakas     整理日期:2016-12-27 12:52:46


  本书是java script 超级畅销书的最新版。ECMAScript 5 和HTML5 在标准之争中双双胜出,使大量专有实现和客户端扩展正式进入规范,同时也为java script 增添了很多适应未来发展的新特性。本书这一版除增加5 章全新内容外,其他章节也有较大幅度的增补和修订,新内容篇幅约占三分之一。全书从java script 语言实现的各个组成部分——语言核心、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 java script一书的作者,并与他人合作撰写了Professional Ajax和Even Faster Web Sites。尼古拉斯拥有梅里马克学院计算机科学学士学位和埃迪柯特学院的MBA学位。他的个人网站是www.nczonline.net,他的Twitter别名是@slicknet。

目录:
  目  录
  第1章 java script简介  1
  1.1 java script简史  1
  1.2 java script实现  2
  1.2.1 ECMAScript  3
  1.2.2 文档对象模型(DOM)  5
  1.2.3 浏览器对象模型(BOM)  8
  1.3 java script版本  8
  1.4 小结  9
  第2章 在HTML中使用java script  10
  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章 BOM  193
  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章 DOM  247
  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 使用NodeList  283
  10.3 小结  284
  第11章 DOM扩展  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 与类相关的扩充  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和DOM3  305
  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 NodeIterator  328
  12.3.2 TreeWalker  330
  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约束验证API  427
  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 WebGL  463
  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与effectAllowed  484
  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 IE  493
  17.1.2 Firefox  494
  17.1.3 Safari  496
  17.1.4 Opera  497
  17.1.5 Chrome  498
  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章 java script与XML  521
  18.1 浏览器对XML DOM的支持  521
  18.1.1 DOM2级核心  521
  18.1.2 DOMParser类型  522
  18.1.3 XMLSerializer类型  523
  18.1.4 IE8及之前版本中的XML  523
  18.1.5 跨浏览器处理XML  527
  18.2 浏览器对XPath的支持  529
  18.2.1 DOM3级XPath  529
  18.2.2 IE中的XPath  534
  18.2.3 跨浏览器使用XPath  535
  18.3 浏览器对XSLT的支持  537
  18.3.1 IE中的XSLT  537
  18.3.2 XSLTProcessor类型  541
  18.3.3 跨浏览器使用XSLT  543
  18.4 小结  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 访问特性  551
  19.2.2 其他节点类型  552
  19.2.3 查询  553
  19.2.4 构建和操作XML  555
  19.2.5 解析和序列化  557
  19.2.6 命名空间  558
  19.3 其他变化  559
  19.4 全面启用E4X  560
  19.5 小结  561
  第20章 JSON  562
  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与Comet  571
  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 FormData  578
  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 Reqeusts  584
  21.4.4 带凭据的请求  585
  21.4.5 跨浏览器的CORS  585
  21.5 其他跨域技术  586
  21.5.1 图像Ping  586
  21.5.2 JSONP  587
  21.5.3 Comet  588
  21.5.4 服务器发送事件  590
  21.5.5 Web Sockets  591
  21.5.6 SSE与Web Sockets  593
  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 Processes  612
  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 Cookie  629
  23.3.2 IE用户数据  637
  23.3.3 Web存储机制  638
  23.3.4 IndexedDB  643
  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章 新兴的API  682
  25.1 requestAnimationFrame()  682
  25.1.1 早期动画循环  682
  25.1.2 循环间隔的问题  683
  25.1.3 mozRequestAnimation-Frame  683
  25.1.4 webkitRequestAnima-tionFrame与msRequest-AnimationFrame  685
  25.2 Page Visibility API  686
  25.3 Geolocation API  687
  25.4 File API  689
  25.4.1 FileReader类型  690
  25.4.2 读取部分内容  692
  25.4.3 对象URL  693
  25.4.4 读取拖放的文件  694
  25.4.5 使用XHR上传文件  695
  25.5 Web计时  696
  25.6 Web Workers  697
  25.6.1 使用Worker  697
  25.6.2 Worker全局作用域  698
  25.6.3 包含其他脚本  699
  25.6.4 Web Workers的未来  700
  25.7 小结  700
  附录A ECMAScript Harmony  701
  附录B 严格模式  717
  附录C java script库  723
  附录D java script工具  727





上一本:书写与差异 下一本:三体Ⅱ

作家文集

下载说明
JavaScript高级程序设计的作者是[美]NicholasC.Zakas,全书语言优美,行文流畅,内容丰富生动引人入胜。为表示对作者的支持,建议在阅读电子书的同时,购买纸质书。

更多好书