JavaScript高级程序设计(第2版)
11推荐 收藏
9.6K阅读
图灵程序设计丛书

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

Nicholas Zakas (作者) 曹力 , 李松峰 (译者)
终止销售
  本书在上一版基础上进行了大幅度更新和修订,融入了近几年来JavaScript应用发展的最新成果,几乎涵盖了所有需要理解的重要概念和最新的JavaScript应用成果。从颇具深度的JavaScript语言基础到作用域(链),从引用类型到面向对象编程,从极其灵活的匿名函数到闭包的内部机制,从浏览器对象模型(BOM)、文档对象模型(DOM)到基于事件的Web脚本设计,从XML(E4X)到Ajax及JSON,从高级前端开发技术到前沿的客户端存储,从最佳编程实践到即将成为现实的API,直至JavaScript未来的发展,全景式地展示了JavaScript高级程序设计的方方面面。
  本书适合不同层次的JavaScript/Web开发人员阅读参考,也可作为高校相关专业课程的教材。

全场电子书5折,仅限1024一天

祝各位程序员节日快乐!🍻

纸质书
¥89.00

其他购买方式?

出版信息

  • 书  名JavaScript高级程序设计(第2版)
  • 系列书名图灵程序设计丛书
  • 执行编辑关于本书的内容有任何问题,请联系 傅志红
  • 出版日期2010-07-07
  • 书  号978-7-115-23095-9
  • 定  价89.00 元
  • 页  数620
  • 开  本16开
  • 出版状态终止销售
  • 原书名Professional JavaScript for Web Developers
  • 原书号978-0-470-22780-0

同系列书

  • HTTP权威指南

    David Gourley   Brian Totty   Marjorie Sayer   Sailu Reddy   Anshu Aggarwal   陈涓   赵振平   译

    本书是HTTP及其相关核心Web技术方面的权威著作,主要介绍了Web应用程序是如何工作的,核心的因特网协议如何...

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

    Nicholas C.Zakas   李松峰   曹力   译

    本书是JavaScript超级畅销书的新版。ECMAScript 5 和HTML5在标准之争中双双胜出,使大量...

  • 计算机科学的基础

    Al Aho   Jeff Ullman   傅尔也   译

    本书全面而详细地阐述了计算机科学的理论基础,从抽象概念的机械化到各种数据模型的建立,用算法、数据抽象等核心思想...

  • Java技术手册(第6版)

    Benjamin J Evans   David Flanagan   安道   译

    通过学习本书,你将能够: 掌握最新的语言细节,包括Java 8的变化 使用基本的Java句法学习面向对...

  • 机器学习实战

    Peter Harrington   李锐   李鹏   曲亚东   王斌   译

    机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或...

目录

第1章 JavaScript简介    1
1.1 JavaScript简史    1
1.2 JavaScript实现    2
1.2.1 ECMAScript    3
1.2.2 文档对象模型DOM    5
1.2.3 浏览器对象模型BOM    7
1.3 JavaScript版本    8
1.4 小结    8
第2章 在HTML中使用JavaScript    9
2.1 script元素    9
2.1.1 标签的位置    11
2.1.2 延迟脚本    11
2.1.3 在XHTML中的用法    12
2.1.4 不推荐使用的语法    13
2.1.5 嵌入代码与外部文件    13
2.2 文档模式    14
2.3 noscript元素    15
2.4 小结    16
第3章 基本概念    17
3.1 语法    17
3.1.1 区分大小写    17
3.1.2 标识符    17
3.1.3 注释    18
3.1.4 语句    18
3.2 关键字和保留字    18
3.3 变量    19
3.4 数据类型    20
3.4.1 typeof操作符    20
3.4.2 Undefined类型    21
3.4.3 Null类型    22
3.4.4 Boolean类型    22
3.4.5 Number类型    23
3.4.6 String类型    28
3.4.7 Object类型    30
3.5 操作符    31
3.5.1 一元操作符    31
3.5.2 位操作符    34
3.5.3 布尔操作符    38
3.5.4 乘性操作符    40
3.5.5 加性操作符    42
3.5.6 关系操作符    43
3.5.7 相等操作符    44
3.5.8 条件操作符    46
3.5.9 赋值操作符    46
3.5.10 逗号操作符    47
3.6 语句    47
3.6.1 if语句    47
3.6.2 do While语句    48
3.6.3 while语句    48
3.6.4 for语句    48
3.6.5 for-in语句    49
3.6.6 label语句    50
3.6.7 break和continue语句    50
3.6.8 with语句    52
3.6.9 switch语句    52
3.7 函数    54
3.7.1 理解参数    55
3.7.2 没有重载    57
3.8 小结    57
第4章 变量、作用域和内存问题    59
4.1 基本类型和引用类型的值    59
4.1.1 动态属性    60
4.1.2 复制变量值    60
4.1.3 传递参数    62
4.1.4 检测类型    63
4.2 执行环境及作用域    64
4.2.1 延长作用域链    66
4.2.2 没有块级作用域    66
4.3 垃圾收集    69
4.3.1 标记清除    69
4.3.2 引用计数    69
4.3.3 性能问题    70
4.3.4 管理内存    71
4.4 小结    72
第5章 引用类型    73
5.1 Object类型    73
5.2 Array类型    75
5.2.1 转换方法    77
5.2.2 栈方法    78
5.2.3 队列方法    79
5.2.4 重排序方法    80
5.2.5 操作方法    81
5.3 Date类型    83
5.3.1 继承的方法    84
5.3.2 日期格式化方法    85
5.3.3 日期/时间组件方法    85
5.4 RegExp类型    86
5.4.1 RegExp实例属性    88
5.4.2 RegExp实例方法    89
5.4.3 RegExp构造函数属性    90
5.4.4 模式的局限性    92
5.5 Function类型    92
5.5.1 没有重载(深入理解)    93
5.5.2 函数声明与函数表达式    94
5.5.3 作为值的函数    94
5.5.4 函数内部属性    96
5.5.5 函数属性和方法    97
5.6 基本包装类型    99
5.6.1 Boolean类型    100
5.6.2 Number类型    101
5.6.3 String类型    102
5.7 内置对象    109
5.7.1 Global对象    109
5.7.2 Math对象    111
5.8 小结    114
第6章 面向对象的程序设计    115
6.1 创建对象    115
6.1.1 工厂模式    115
6.1.2 构造函数模式    116
6.1.3 原型模式    119
6.1.4 组合使用构造函数模式和原型模式    128
6.1.5 动态原型模式    129
6.1.6 寄生构造函数模式    129
6.1.7 稳妥构造函数模式    130
6.2 继承    131
6.2.1 原型链    131
6.2.2 借用构造函数    136
6.2.3 组合继承    137
6.2.4 原型式继承    138
6.2.5 寄生式继承    139
6.2.6 寄生组合式继承    139
6.3 小结    142
第7章 匿名函数    143
7.1 递归    144
7.2 闭包    144
7.2.1 闭包与变量    147
7.2.2 关于this对象    148
7.2.3 内存泄漏    149
7.3 模仿块级作用域    150
7.4 私有变量    152
7.4.1 静态私有变量    153
7.4.2 模块模式    154
7.4.3 增强的模块模式    156
7.5 小结    157
第8章 BOM    158
8.1 window对象    158
8.1.1 全局作用域    158
8.1.2 窗口关系及框架    159
8.1.3 窗口位置    161
8.1.4 窗口大小    162
8.1.5 导航和打开窗口    163
8.1.6 间歇调用和超时调用    166
8.1.7 系统对话框    168
8.2 location对象    169
8.2.1 查询字符串参数    170
8.2.2 位置操作    171
8.3 navigator对象    172
8.3.1 检测插件    173
8.3.2 注册处理程序    175
8.4 screen对象    176
8.5 history对象    177
8.6 小结    178
第9章 客户端检测    179
9.1 能力检测    179
9.2 怪癖检测    181
9.3 用户代理检测    181
9.3.1 用户代理字符串的历史    182
9.3.2 用户代理字符串检测技术    187
9.3.3 完整的代码    199
9.3.4 使用方法    202
9.4 小结    202
第10章 DOM    204
10.1 节点层次    204
10.1.1 Node类型    205
10.1.2 Document类型    210
10.1.3 Element类型    217
10.1.4 Text类型    225
10.1.5 Comment类型    228
10.1.6 CDATASection类型    228
10.1.7 DocumentType类型    229
10.1.8 DocumentFragment类型    229
10.1.9 Attr类型    230
10.2 DOM扩展    231
10.2.1 呈现模式    231
10.2.2 滚动    232
10.2.3 children属性    232
10.2.4 contains方法    233
10.2.5 操作内容    234
10.3 DOM操作技术    239
10.3.1 动态脚本    239
10.3.2 动态样式    241
10.3.3 操作表格    242
10.3.4 使用NodeList    245
10.4 小结    245
第11章 DOM2和DOM3    247
11.1 DOM变化    247
11.1.1 针对XML命名空间的变化    248
11.1.2 其他方面的变化    250
11.2 样式    254
11.2.1 访问元素的样式    254
11.2.2 操作样式表    258
11.2.3 元素大小    261
11.3 遍历    267
11.3.1 NodeIterator    268
11.3.2 TreeWalker    271
11.4 范围    272
11.4.1 DOM中的范围    272
11.4.2 IE中的范围    279
11.5 小结    282
第12章 事件    283
12.1 事件流    283
12.1.1 事件冒泡    283
12.1.2 事件捕获    284
12.1.3 DOM事件流    285
12.2 事件处理程序(或事件侦听器)    285
12.2.1 HTML事件处理程序    286
12.2.2 DOM0级事件处理程序    286
12.2.3 DOM2级事件处理程序    287
12.2.4 IE事件处理程序    288
12.2.5 跨浏览器的事件处理程序    289
12.3 事件对象    290
12.3.1 DOM中的事件对象    291
12.3.2 IE中的事件对象    293
12.3.3 跨浏览器的事件对象    295
12.4 事件类型    296
12.4.1 UI事件    297
12.4.2 鼠标事件    297
12.4.3 键盘事件    303
12.4.4 HTML事件    307
12.4.5 变动事件    312
12.4.6 专有事件    316
12.4.7 移动Safari支持的事件    325
12.5 内存和性能    328
12.5.1 事件委托    328
12.5.2 移除事件处理程序    330
12.6 模拟事件    331
12.6.1 DOM中的事件模拟    331
12.6.2 IE中的事件模拟    335
12.7 小结    336
第13章 表单脚本    337
13.1 表单    337
13.1.1 提交表单    338
13.1.2 重置表单    338
13.1.3 表单字段    339
13.2 文本框脚本    343
13.2.1 选择文本    344
13.2.2 过滤输入    347
13.2.3 自动切换焦点    350
13.3 选择框脚本    351
13.3.1 选择选项    352
13.3.2 添加选项    354
13.3.3 移除选项    354
13.3.4 移动和重排选项    355
13.4 表单序列化    355
13.5 富文本编辑    357
13.5.1 操作富文本    358
13.5.2 富文本选区    359
13.5.3 表单与富文本    361
13.6 小结    361
第14章 错误处理与调试    363
14.1 浏览器错误报告    363
14.1.1 Internet Explorer    363
14.1.2 Firefox    364
14.1.3 Safari    366
14.1.4 Opera    367
14.1.5 Chrome    368
14.2 错误处理    369
14.2.1 try-catch语句    369
14.2.2 抛出错误    372
14.2.3 错误(error)事件    374
14.3 错误处理策略    375
14.3.1 常见的错误类型    375
14.3.2 区分致命错误和非致命错误    379
14.3.3 把错误记录到服务器    380
14.4 调试技术    381
14.4.1 将消息记录到控制台    381
14.4.2 将消息记录到当前页面    383
14.4.3 抛出错误    384
14.5 常用的IE错误    384
14.5.1 操作终止    384
14.5.2 无效字符    386
14.5.3 未找到成员    386
14.5.4 未知运行时错误    387
14.5.5 语法错误    387
14.5.6 系统无法找到指定资源    387
14.6 调试工具    388
14.6.1 IE中的调试器    388
14.6.2 Firebug    392
14.6.3 Drosera    396
14.6.4 Opera中的JavaScript
调试器    398
14.6.5 其他调试工具    401
14.7 小结    401
第15章 JavaScript与XML    402
15.1 浏览器对XML DOM的支持    402
15.1.1 DOM2级核心    402
15.1.2 DOMParser类型    403
15.1.3 XMLSerializer类型    404
15.1.4 DOM3级加载和保存    404
15.1.5 IE对XML的支持    409
15.1.6 跨浏览器处理XML    412
15.2 浏览器对XPath的支持    414
15.2.1 DOM3级XPath    414
15.2.2 IE中的XPath    418
15.2.3 跨浏览器使用XPath    419
15.3 浏览器对XSLT的支持    421
15.3.1 IE中的XSLT    421
15.3.2 XSLTProcessor类型    425
15.3.3 跨浏览器使用XSLT    427
15.4 小结    428
第16章 E4X    429
16.1 E4X的类型    429
16.1.1 XML类型    429
16.1.2 XMLList类型    430
16.1.3 命名空间类型    431
16.1.4 QName类型    432
16.2 一般用法    432
16.2.1 访问特性    433
16.2.2 其他节点类型    434
16.2.3 查询    436
16.2.4 构建和操作XML    437
16.2.5 解析和序列化    439
16.2.6 命名空间    439
16.3 其他变化    441
16.4 全面启用E4X    442
16.5 小结    442
第17章 Ajax与JSON    443
17.1 XHR对象    443
17.1.1 XHR的用法    445
17.1.2 HTTP头部信息    446
17.1.3 GET请求    448
17.1.4 POST请求    448
17.1.5 浏览器差异    449
17.1.6 安全    451
17.2 跨域请求    452
17.2.1 XDomainRequest对象    452
17.2.2 跨域XHR    454
17.3 JSON    454
17.3.1 在Ajax中使用JSON    456
17.3.2 安全    458
17.4 小结    459
第18章 高级技巧    460
18.1 高级函数    460
18.1.1 作用域安全的构造函数    460
18.1.2 惰性载入函数    462
18.1.3 函数绑定    464
18.1.4 函数柯里化    465
18.2 高级定时器    467
18.2.1 重复的定时器    469
18.2.2 Yielding Processes    470
18.2.3 函数节流    472
18.3 自定义事件    474
18.4 拖放    476
18.4.1 修缮拖动功能    478
18.4.2 添加自定义事件    480
18.5 小结    482
第19章 客户端存储    483
19.1 cookie    483
19.1.1 限制    483
19.1.2 cookie的成分    484
19.1.3 JavaScript中的cookie    485
19.1.4 子cookie    487
19.1.5 关于cookie的思考    491
19.2 IE用户数据    491
19.3 DOM存储机制    492
19.3.1 存储类型    492
19.3.2 sessionStorage对象    493
19.3.3 globalStorage对象    494
19.3.4 localStorage对象    495
19.3.5 StorageItem类型    496
19.3.6 storage事件    496
19.3.7 限制    496
19.4 总结    497
第20章 最佳实践    498
20.1 可维护性    498
20.1.1 什么是可维护的代码    498
20.1.2 代码约定    498
20.2 松散耦合    501
20.3 性能    507
20.3.1 注意作用域    508
20.3.2 选择正确方法    509
20.3.3 最小化语句数    513
20.3.4 优化DOM交互    515
20.4 部署    517
20.4.1 构建过程    517
20.4.2 验证    518
20.4.3 压缩    520
20.5 小结    522
第21章 未来的API    523
21.1 选择器API    523
21.1.1 querySelector方法    523
21.1.2 querySelectorAll方法    524
21.1.3 现今和未来的支持情况    525
21.2 HTML5    525
21.2.1 字符集属性    525
21.2.2 类相关的增加    526
21.2.3 自定义数据特性    528
21.2.4 跨文档消息传递    528
21.2.5 媒体元素    529
21.2.6 canvas元素    532
21.2.7 离线支持    540
21.2.8 历史的改变    541
21.2.9 数据库存储    541
21.2.10 拖放操作    543
21.2.11 WebSocket类型    546
21.2.12 HTML5的未来    547
21.3 小结    547
第22章 JavaScript的未来    548
22.1 ECMAScript4/JavaScript2    548
22.1.1 JavaScript1.5    548
22.1.2 JavaScript1.6    550
22.1.3 JavaScript1.7    552
22.1.4 JavaScript1.8    557
22.1.5 JavaScript1.9    558
22.1.6 ECMAScript4提案    559
22.1.7 变量类型    559
22.1.8 函数    561
22.1.9 类型定义    563
22.1.10 类和接口    565
22.1.11 接口    569
22.1.12 继承    569
22.1.13 命名空间    571
22.1.14 包    572
22.1.15 语言上的其他变更    572
22.1.16 ECMAScript4的未来    577
22.2 ECMAScript 3.1    577
22.2.1 对对象内部实现的变更    578
22.2.2 静态对象方法    578
22.2.3 本地的JSON支持    585
22.2.4 Decimal    586
22.2.5 用法子集    589
22.2.6 ECMAScript3.1的未来    590
22.3 小结    590
附录A JavaScript库    591
附录B JavaScript工具    595

相关文章

  • 李松峰 7推荐

    DOM Level 3 Events: DOM事件架构(2-1)

    摘译自:Document Object Model (DOM) Level 3 Events Specification 3. DOM事件架构 3.1 事件分派与DOM事件流 本节定义本规范所定义的事件模型的事件分派机制。应用可以使用… ...

  • 李松峰 3推荐

    DOM Level 3 Events: DOM事件架构(2-2)

    摘译自:Document Object Model (DOM) Level 3 Events Specification 3.4 可信任事件 用户代理生成的事件对用户代理而言是可信任的,不管该事件是因用户交互生成的,还是因修改DOM引起的。可信任… ...

  • 高翌翔 15推荐

    JavaScript模块化开发一瞥

    对于那些正在构建大型应用程序,而对JavaScript不甚了解的开发者而言,他们最初必须要面对的挑战之一就是如何着手组织代码。起初只要在标记之间嵌入几百行代码就能跑起来,不过很快代码就会变得一塌糊涂…… 对于那些正在构建大型应用程序,而对JavaScript不甚了解的…...

  • lt 1推荐

    对PDF电子书进行比较的办法

    安装adobe acorbat pro,选择视图,比较文档,在对话框中选择要比较的文件,然后点击“确定”, 就可以生成两份文档的差异报告。 ...

  • 甘超阳(小问) 6推荐

    前端数据库 NanoDB核心开发笔记

    前两天,我完成了《Node.js高级程序设计》的第一章(吐了一斤狗血似的),澄净让我休息一下来等他。 于是小问就开始动工我在中考之前的一个灵感——前端数据库,在思考进入成熟阶… ...

  • 甘超阳(小问) 2推荐

    JavaScript不是渣渣

    在浩瀚无垠的Programming海洋里,有着那么一个经常被人误解的家伙——对,就是JavaScript。 它是每一个Web Developer所不可或缺的一门脚本语言,从以前的“页面仔(F2E,前端工程师)”,到现在的“糯米(Noder,Node.js后端工程师)”。Java…...

  • samael 1推荐

    关于JS中switch和if进行多路判断的一些讨论

    昨天给一个学生改js作业是发现一个很有意思的细节, 就是关于多路判断是用switch还是if, 这里把相关的调查总结一下. MDN中文版里: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/…...

  • 书瓖果 3推荐

    程序员出境之我最喜欢的图灵书

    世界读书日就要到来了,我来讲讲我和图灵的缘分。 我本不是一个程序员,专业是通信工程,和编程不是特别大关系。去年12月份左右的时候发现自己还是对编程感兴趣,便开始了自己的编程学习之路,也是在这个时候发现了图灵程序设计丛书,从此 便爱上了图灵系列丛书。 从开始下决心学习编程都如今也…...

  • Cyang 7推荐

    Js 一道闭包问题

    问题描述 前几天去找前端的实习生工作,被一道 js 的闭包题目给卡住了,题目大致如下: for (var i = 0; i < 10; i++) { setTimeout(function() { console.log(i); }, 0); } 稍微了解 js …...

  • Rachelmu 3推荐

    对我影响最大的一本书———《JavaScript高级程序设计》

    引言:年华一去不复返,事业放弃再难成。 大学生涯,浑浑噩噩。 虽然毕业多年,但是现在回想起大学生涯还是历历在目仿若昨日。大学调剂到了计算机专业,当时真的是非常的迷茫跟惶恐,看不懂的C语言,学不会的C++指针,代码对我来说真的又熟悉又陌生,每天上课时是最难熬的日子。甚至到了后…...

  • 转自:豆瓣 作者:zhkzyth
    如果说《javascript权威指南》是一本字典,那zakas这本《javascript高级程序设计》可以算是一本由浅入深的好读物。
      
      如果入门js的话,我比较推荐这本,再搭配权威指南那本书,基本看完后,对js就有一定程度的深入了。
      
      看下这本书的目录,大体上把js涉及到的概念都讲了一遍,而且非常通俗,至少在我对比权威指南这本书后,我是这么认为的。
      
      书中涉及的概念基本涵盖了js的大部分内容,包括 作用域链、js数据类型、OOP对象在js中的实现、闭包、BOM和DOM模型、对变态IE的系列兼容的解决方案、事件流、还有xml、jason、 E4X这些数据格式与js的交互操作简介、高级技巧的介绍(比如惰性载入)等等,大量的例子,配上详细的讲述,理解起来不会太费解,当然了,这本书你前后``至少要翻上几遍......
      
      看书的过程中会遇到蛮多问题的,你需要去google找出答案。
      
      说我自己的,在理解原型链的时候,作者在书中配出了相应的图,事后看来是非常粗糙的,但对当时入门的我来说,这样的简略恰恰帮我忽略不必要的东西。后来, 我在看网上文章的过程中,特别是查阅了博客园的笨蛋的座右铭的博客(他的js系列文章,从内存的角度去解释js的实现原理和架构的时候),我才发现当时我 对原型链的理解是多么粗糙。
      
      我觉得zakas在写这本书的时候,是考虑到入门的人的,我刚才举的那个配图的例子就是,虽然简略,但却非常直观,省略掉不必要的东西,帮助你快速建立对原型链的心理模型,反观权威指南,整本书我都不没看到有没配过类似的图,而且读起来,好像吃饭吃到沙一样。
      
      不管怎么样,虽然这本书叫《js的高级程序设计》,但我觉得是内容涉及的比较多,而且深而已,对初学者的门槛还是不高的,如果担心的话,再拉《javascript权威指南》陪着看好了,我就是这么做的。
      
      下面这些资源都蛮不错的,推荐给入门的你:月影的51js、blueidea、mozilla的开发文档、Quora、StackOverflow
    熊猫夜未眠  发表于 2011-09-08 13:41:53
    推荐
    • 向你学习!

      MarkQin  发表于 2011-10-25 17:04:37
  • 既然是0元,怎么不能下载啊?
    sfbush  发表于 2010-06-28 22:26:19
    推荐
  • 刚买了第三版比第二版厚了好多,内容新加了三分之一...
    AspNeter  发表于 2013-08-29 09:10:03
    推荐