本书适合有一定编程经验的开发人员阅读,也可作为高校相关专业课程的教材。" />
ManBetX程序设计丛书

JavaScript高级程序设计

Nicholas C.Zakas (作者) 张欣 , 曹力 (译者)
JavaScript是目前Web客户端开发的主要编程语言,也是Ajax的核心技术之一。本书从最早期Netscape浏览器中的JavaScript开始讲起,直到当前它对XML和Web服务的具体支持,内容主要涉及JavaScript的语言特点、JavaScript与浏览器的交互、更高级的JavaScript技巧,以及与在Web应用程序中部署JavaScript解决方案有关的问题,如错误处理、调试、安全性、优化/混淆化、XML和Web服务,最后介绍应用所有这些知识来创建动态用户界面。
  本书适合有一定编程经验的开发人员阅读,也可作为高校相关专业课程的教材。
纸质书
¥59.00

其他购买方式?

出版信息

  • 书  名JavaScript高级程序设计
  • 系列书名ManBetX程序设计丛书
  • 执行编辑关于本书的内容有任何问题,请联系 傅志红
  • 出版日期2006-09-25
  • 书  号7-115-15209-8
  • 定  价59.00 元
  • 页  数552
  • 开  本16开
  • 出版状态终止销售
  • 原书名
  • 原书号

同系列书

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

    [美]马特·弗里斯比(Matt Frisbie)   李松峰   译

    本书是JavaScript经典图书的新版。第4版涵盖ECMAScript 2019,全面、深入地介绍了Java...

  • 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句法学习面向对...

本书特色

目前国内市场最畅销的JavaScript图书!
最适合有经验程序员的JavaScript教程!

目录

第1章 JavaScript是什么    1
1.1 历史简述    1
1.2 JavaScript实现    2
1.2.1 ECMAScript    3
1.2.2 DOM    5
1.2.3 BOM    8
1.3 小结    8
第2章 ECMAScript基础    9
2.1 语法    9
2.2 变量    10
2.3 关键字    12
2.4 保留字    12
2.5 原始值和引用值    13
2.6 原始类型    13
2.6.1 typeof运算符    14
2.6.2 Undefined类型    14
2.6.3 Null类型    15
2.6.4 Boolean类型    15
2.6.5 Number类型    15
2.6.6 String类型    17
2.7 转换    18
2.7.1 转换成字符串    18
2.7.2 转换成数字    19
2.7.3 强制类型转换    20
2.8 引用类型    22
2.8.1 Object类    22
2.8.2 Boolean类    23
2.8.3 Number类    23
2.8.4 String类    24
2.8.5 instanceof运算符    28
2.9 运算符    28
2.9.1 一元运算符    28
2.9.2 位运算符    32
2.9.3 Boolean运算符    37
2.9.4 乘性运算符    40
2.9.5 加性运算符    41
2.9.6 关系运算符    42
2.9.7 等性运算符    43
2.9.8 条件运算符    45
2.9.9 赋值运算符    45
2.9.10 逗号运算符    46
2.10 语句    46
2.10.1 if语句    46
2.10.2 迭代语句    47
2.10.3 有标签的语句    48
2.10.4 break语句和continue语句    48
2.10.5 with语句    50
2.10.6 switch语句    50
2.11 函数    51
2.11.1 无重载    53
2.11.2 arguments对象    53
2.11.3 Function类    54
2.11.4 闭包    56
2.12 小结    57
第3章 对象基础    58
3.1 面向对象术语    58
3.1.1 面向对象语言的要求    58
3.1.2 对象的构成    59
3.2 对象应用    59
3.2.1 声明和实例化    59
3.2.2 对象引用    59
3.2.3 对象废除    59
3.2.4 早绑定和晚绑定    60
3.3 对象的类型    60
3.3.1 本地对象    60
3.3.2 内置对象    70
3.3.3 宿主对象    75
3.4 作用域    75
3.4.1 公用、受保护和私有作用域    75
3.4.2 静态作用域并非静态的    76
3.4.3 关键字this    76
3.5 定义类或对象    78
3.5.1 工厂方式    78
3.5.2 构造函数方式    80
3.5.3 原型方式    80
3.5.4 混合的构造函数/原型方式    81
3.5.5 动态原型方法    82
3.5.6 混合工厂方式    83
3.5.7 采用哪种方式    84
3.5.8 实例    84
3.6 修改对象    86
3.6.1 创建新方法    86
3.6.2 重定义已有方法    87
3.6.3 极晚绑定    88
3.7 小结    88
第4章 继承    89
4.1 继承机制实例    89
4.2 继承机制的实现    90
4.2.1 继承的方式    90
4.2.2 一个更实际的例子    96
4.3 其他继承方式    100
4.3.1 zInherit    100
4.3.2 xbObjects    104
4.4 小结    108
第5章 浏览器中的JavaScript    109
5.1 HTML中的JavaScript    109
5.1.1 <script/>标签    109
5.1.2 外部文件格式    110
5.1.3 内嵌代码和外部文件    111
5.1.4 标签放置    111
5.1.5 隐藏还是不隐藏    113
5.1.6 <noscript/>标签    113
5.1.7 XHTML中的改变    114
5.2 SVG中的JavaScript    116
5.2.1 SVG基础    116
5.2.2 SVG中的<script/>标签    117
5.2.3 SVG中的标签放置    118
5.3 BOM    119
5.3.1 window对象    119
5.3.2 document对象    130
5.3.3 location对象    133
5.3.4 navigator对象    135
5.3.5 screen对象    136
5.4 小结    137
第6章 DOM基础    138
6.1 什么是DOM?    138
6.1.1 XML简介    138
6.1.2 针对XML的API    141
6.1.3 节点的层次    141
6.1.4 特定语言的DOM    144
6.2 对DOM的支持    145
6.3 使用DOM    145
6.3.1 访问相关的节点    145
6.3.2 检测节点类型    146
6.3.3 处理特性    147
6.3.4 访问指定节点    148
6.3.5 创建和操作节点    150
6.4 HTML DOM特征功能    155
6.4.1 让特性像属性一样    155
6.4.2 table方法    156
6.5 遍历DOM    158
6.5.1 NodeIterator    158
6.5.2 TreeWalker    163
6.6 测试与DOM标准的一致性    165
6.7 DOM Level 3    166
6.8 小结    166
第7章 正则表达式    167
7.1 正则表达式支持    167
7.1.1 使用RegExp对象    168
7.1.2 扩展的字符串方法    169
7.2 简单模式    170
7.2.1 元字符    170
7.2.2 使用特殊字符    170
7.2.3 字符类    172
7.2.4 量词    174
7.3 复杂模式    177
7.3.1 分组    177
7.3.2 反向引用    178
7.3.3 候选    179
7.3.4 非捕获性分组    180
7.3.5 前瞻    181
7.3.6 边界    182
7.3.7 多行模式    183
7.4 理解RegExp对象    184
7.4.1 实例属性    184
7.4.2 静态属性    185
7.5 常用模式    186
7.5.1 验证日期    187
7.5.2 验证信用卡号    188
7.5.3 验证电子邮件地址    192
7.6 小结    193
第8章 检测浏览器和操作系统    194
8.1 navigator对象    194
8.2 检测浏览器的方式    194
8.2.1 对象/特征检测法    194
8.2.2 user-agent字符串检测法    195
8.3 user-agent字符串简史    196
8.3.1 Netscape Navigator 3.0与IE3.0    196
8.3.2 Netscape Communicator 4.0与IE 4.0    197
8.3.3 IE 5.0及更高版本    198
8.3.4 Mozilla    198
8.3.5 Opera    200
8.3.6 Safari    201
8.3.7 结语    201
8.4 浏览器检测脚本    201
8.4.1 方法学    202
8.4.2 第一步    202
8.4.3 检测Opera    204
8.4.4 检测Konqueror/Safari    206
8.4.5 检测IE    208
8.4.6 检测Mozilla    209
8.4.7 检测Netscape Communicator 4.x    210
8.5 平台/操作系统检测脚本    211
8.5.1 方法学    211
8.5.2 第一步    212
8.5.3 检测Windows操作系统    212
8.5.4 检测Macintosh操作系统    214
8.5.5 检测Unix操作系统    214
8.6 全部脚本    215
8.7 例子:登录页面    219
8.8 小结    224
第9章 事件    225
9.1 今天的事件    225
9.2 事件流    226
9.2.1 冒泡型事件    226
9.2.2 捕获型事件    227
9.2.3 DOM事件流    228
9.3 事件处理函数/监听函数    229
9.3.1 IE    230
9.3.2 DOM    231
9.4 事件对象    232
9.4.1 定位    233
9.4.2 属性/方法    233
9.4.3 相似性    235
9.4.4 区别    238
9.5 事件的类型    240
9.5.1 鼠标事件    240
9.5.2 键盘事件    244
9.5.3 HTML事件    246
9.5.4 变化事件    251
9.6 跨平台的事件    252
9.6.1 EventUtil对象    252
9.6.2 添加/删除事件处理函数    252
9.6.3 格式化event对象    254
9.6.4 获取事件对象    258
9.6.5 示例    259
9.7 小结    260
第10章 高级DOM技术    261
10.1 样式编程    261
10.1.1 DOM样式的方法    263
10.1.2 自定义鼠标提示    264
10.1.3 可折叠区域    265
10.1.4 访问样式表    266
10.1.5 最终样式    270
10.2 innerText和innerHTML    271
10.3 outerText和outerHTML    273
10.4 范围    274
10.4.1 DOM中的范围    274
10.4.2 IE中的范围    284
10.4.3 范围在实际中的应用    288

10.5 小结    288
第11章 表单和数据完整性    289
11.1 表单基础    289
11.2 对<form/>元素进行脚本编写    291
11.2.1 获取表单的引用    291
11.2.2 访问表单字段    291
11.2.3 表单字段的共性    292
11.2.4 聚焦于第一个字段    292
11.2.5 提交表单    293
11.2.6 仅提交一次    294
11.2.7 重置表单    295
11.3 文本框    295
11.3.1 获取/更改文本框的值    296
11.3.2 选择文本    297
11.3.3 文本框事件    298
11.3.4 自动选择文本    298
11.3.5 自动切换到下一个    299
11.3.6 限制textarea的字符数    300
11.3.7 允许/阻止文本框中的字符    301
11.3.8 使用上下按键操作数字文本    306
11.4 列表框和组合框    308
11.4.1 访问选项    309
11.4.2 获取/更改选中项    309
11.4.3 添加选项    310
11.4.4 删除选项    311
11.4.5 移动选项    312
11.4.6 重新排序选项    313
11.5 创建自动提示的文本框    313
11.5.1 匹配    314
11.5.2 内部机制    314
11.6 小结    316
第12章 表格排序    317
12.1 起点——数组    317
12.2 对单列的表格排序    319
12.2.1 比较函数    320
12.2.2 sortTable()函数    320
12.3 对多列表格进行排序    323
12.3.1 比较函数生成器    323
12.3.2 修改sortTable()方法    324
12.3.3 逆序排列    325
12.3.4 对不同的数据类型进行排序    327
12.3.5 高级排序    330
12.4 小结    334
第13章 拖放    335
13.1 系统拖放    335
13.1.1 拖放事件    336
13.1.2 数据传输对象dataTransfer    341
13.1.3 dragDrop()方法    345
13.1.4 优点及缺点    346
13.2 模拟拖放    346
13.2.1 代码    347
13.2.2 创建放置目标    349
13.2.3 优点及缺点    352
13.3 zDragDrop    352
13.3.1 创建可拖动元素    352
13.3.2 创建放置目标    353
13.3.3 事件    353
13.3.4 例子    354
13.4 小结    355
第14章 错误处理    356
14.1 错误处理的重要性    356
14.2 错误和异常    357
14.3 错误报告    358
14.3.1 IE(Windows)    358
14.3.2 IE(MacOS)    359
14.3.3 Mozilla(所有平台)    359
14.3.4 Safari(MacOS)    360
14.3.5 Opera 7(所有平台)    361
14.4 处理错误    362
14.4.1 onerror事件处理函数    362
14.4.2 try...catch语句    365
14.5 调试技巧    370
14.5.1 使用警告框    370
14.5.2 使用Java控制台    371
14.5.3 将消息写入JavaScript控制台(仅限Opera 7+)    372
14.5.4 抛出自定义错误    372
14.5.5 JavaScript校验器    373
14.6 调试器    374
14.6.1 Microsoft Script Debugger    374
14.6.2 Venkman    376
14.7 小结    383
第15章 JavaScript中的XML    384
15.1 浏览器中的XML DOM支持    384
15.1.1 IE中的XML DOM支持    384
15.1.2 Mozilla中XML DOM支持    388
15.1.3 通用接口    393
15.2 浏览器中的XPath支持    403
15.2.1 XPath简介    403
15.2.2 IE中的XPath支持    404
15.2.3 Mozilla中的XPath支持    404
15.3 浏览器中的XSLT支持    408
15.3.1 IE中的XSLT支持    410
15.3.2 Mozilla中XSLT支持    413
15.4 小结    415
第16章 客户端与服务器端的通信    416
16.1 cookie    416
16.1.1 cookie的成分    416
16.1.2 其他安全限制    417
16.1.3 JavaScript中的cookie    417
16.1.4 服务器端的cookie    419
16.1.5 在客户端与服务器端之间传递cookie    422
16.2 隐藏框架    423
16.3 HTTP请求    426
16.3.1 使用HTTP首部    428
16.3.2 实现的复制品    429
16.3.3 进行GET请求    430
16.3.4 进行POST请求    430
16.4 LiveConnect请求    431
16.4.1 进行GET请求    431
16.4.2 进行POST请求    433
16.5 智能HTTP请求    435
16.5.1 get()方法    435
16.5.2 post()方法    438
16.6 实际使用    439
16.7 小结    439
第17章 Web服务    440
17.1 Web服务快速入门    440
17.1.1 Web服务是什么?    440
17.1.2 WSDL    441
17.2 IE中的Web服务    443
17.2.1 使用WebService组件    444
17.2.2 WebService组件例子    445
17.3 Mozilla中的Web服务    447
17.3.1 加强的特权    447
17.3.2 使用SOAP方法    448
17.3.3 使用WSDL代理    451
17.4 跨浏览器的方案    454
17.4.1 WebService对象    454
17.4.2 Temperature 服务    456
17.4.3 使用TemperatureService对象    458
17.5 小结    458
第18章 与插件进行交互    459
18.1 为何使用插件    459
18.2 流行的插件    460
18.3 MIME类型    460
18.4 嵌入插件    461
18.4.1 加入参数    461
18.4.2 Netscape 4.x    462
18.5 检测插件    462
18.5.1 检测Netscape式插件    463
18.5.2 检测ActiveX插件    467
18.5.3 跨浏览器检测    469
18.6 Java applet    470
18.6.1 嵌入applet    470
18.6.2 在JavaScript中引用applet    471
18.6.3 创建applet    471
18.6.4 JavaScript到Java的通信    472
18.6.5 Java到JavaScript的通信    475
18.7 Flash动画    477
18.7.1 嵌入Flash动画    477
18.7.2 引用Flash动画    478
18.7.3 JavaScript到Flash的通信    478
18.7.4 Flash到JavaScript通信    481
18.8 ActiveX控件    483
18.9 小结    485
第19章 部署问题    486
19.1 安全性    486
19.1.1 同源策略    486
19.1.2 窗口对象问题    487
19.1.3 Mozilla特有的问题    488
19.1.4 资源限制    490
19.2 国际化    491
19.2.1 使用JavaScript检测语言    491
19.2.2 策略    492
19.2.3 字符串的思考    492
19.3 优化JavaScript    495
19.3.1 下载时间    495
19.3.2 执行时间    499
19.4 知识产权的问题    512
19.4.1 混淆    512
19.4.2 Microsoft Script Encoder(仅IE)    513
19.5 小结    514
第20章 JavaScript的未来    515
20.1 ECMAScript 4    515
20.1.1 Netscape的提案    515
20.1.2 实现    521
20.2 ECMAScript for XML    522
20.2.1 途径    522
20.2.2 for each..in循环    524
20.2.3 新的类    524
20.2.4 实现    532
20.3 小结    532
索引(ManBetX网站下载)
  • var oBoolean Object = new Boolean(true); //这样的代码都弄上去了
    书中大量的大小写不分
    绝对垃圾书 为了挣钱根本对内容不管不问
    xxxx  发表于 2006-10-24 17:11:19
  • 书看完了,现在再来啰嗦几句吧。

    一. 关于原著。
    总的来说,是本好书。与犀牛书相比,应用方面讲得更多,对语言本身的讲解不如后者深入细致,当然,如果这本书的定位并不是“第一本JS书”,那就没有什么不妥。例外的是,对象的构造和继承部分,这本书比犀牛书细致得多,值得一看。至于网友kavenyan在论坛说的“《JavaScript权威指南》(第四版)中介绍比较混乱的变量的作用域问题,在《JavaScript高级程序设计》用“闭包”等来解释要清晰明白的多”,我不能赞同。本书中在56页用了半页的篇幅来讲了一下闭包的概念,对于不知道闭包的读者来说,是不远远不够的;而且,JS中作用域的特点,也并非用闭包就能完全解释。另外,书中有一些小错误,其中两个:
    1. 392页的“4.解析错误”部分,作者试图通过用正则表达式来提取DOMParser对象的parseFromString函数的返回结果中的错误信息,并将其输出。这本身没有什么问题。作者的错误出在此后,他试图在此基础上、以模拟IE平台上的parseError对象的方式来提供一个跨浏览器平台的获取解析错误的方案。因为DOMParser对象的parseFromString函数的返回结果中的错误信息中,诸如“Location”、 “Line”等信息实际上会使用本地化字符串(也即,在中文平台上,它们就是汉字),所以作者提供的那个解决方案是行不通的。
    2. 429页下方有这样一段代码:
    if (typeof XMLHttpRequest == "undefined" && window.ActiveXObject) {
    function XMLHttpRequest() {
    ...
    }
    }
    作者的意图,是提供一个跨浏览器平台的构造XMLHttpRequest对象的方案。但问题在于:ECMAScript标准中是不允许在if语句中用这种方式定义函数的(用函数直接量语法或者new Function语法倒是可以的,参见犀牛书)。尽管许多浏览器对此较为宽容,不一定会把它作为语法错误来报告,但它们对此用法的解释是各不相同的,因此这个“跨平台方案”并不能真正地跨平台。实际上,作者在后面提供的基于这一“跨平台”方案的例子,在IE和 Firefox上可以正常运行,但在Opera 8上面却会出错,而且那个错误让人觉得有点荒唐,诸位可以自行实验一下。

    二. 关于翻译。
    总的来说,还算可以接受,比老邱、老康之流强许多。但也有不少错误。例如:
    1. 前言中“JavaScript是一种基于Java的面向对象程序设计语言,它因为能够以嵌入式applet的形式用于Web而流行起来”的问题,网友们早已指出。出版方也作了一点修改,而且在此作了一些解释。但是,出版方的修改和解释并不到位。这句话,大家的意见有两个方面:其一, JavaScript与Java无关;其二,后面的子句修饰的是Java而不是JavaScript(参见网友caiyi0903提供的英文原文 “JavaScript is very loosely based on Java, an object-oriented programming language popularized for use on the Web by way of embedded applets.”)。关于第一点,有许多人,包括犀牛书的作者认为JavaScript与Java毫无关系,但也有一些人,包括本书作者认为二者有一小点关系(从本书第一章中的相关叙述可以看出)。OK,既然作者本人认为有点关系,那么作为译者,也只能按他的意思来译。但是,译者和出版方对于第二点所涉及的错误——一个很浅显的错误——至今仍然死不认账的态度,令人遗憾。
    2. 15页8行,“如果不用typeof运算符,就对oTemp2使用其它运算符,这将引起错误”,这句话是明显的错译,让人误以为对oTemp2使用任何别的运算符之前必须先对它来个typeof。从译文不难猜出英文原文、以及为何有此错译,无须我多言。
    3. 17页倒5行,“与Java不同的是,双引号用于声明字符串,单引号用于声明字符”,这句话也是明显的错译。同样,从译文不难猜出英文原文、以及为何有此错译,也无须我多言。
    4. 431页倒4行,“几乎所有现在的浏览器(除IE这个大首部外)都支持LiveConnect”。我的翻译大哥,能不能劳您大驾出来给大伙解释一下“大首部”是个什么东东?是不是big-head?您老不认识这个词不打紧,但作为翻译,您就没想到去查一下字典么?
    此类错误在书中还有不少。好在一些错误好歹还能让人猜出英文原文来,至于那些让人猜不透的,读者也只能干瞪眼了。我认为这些错误的原因不在于专业水平,而在于职业态度。说到水平,我想给几位译者提个不中听的建议:如果以后不只是写代码,还要做点文字工作的话,请三位务必努力提高自己的汉语水平。

    三. 关于电子工业出版社的《JavaScript编程宝典》。
    译者在书的第三页中指出:“某出版社”出的《JavaScript编程宝典》一书在书名和装帧上极力模仿Goodmann所著的《JavaScript Bible》,试图以此诱骗读者,是一本国人的欺世之作。这话说得好!大快人心。如果我没有记错的话,电子工业出版社的《JavaScript编程宝典》这本书在互动出版网上作为期书进行宣传时,的确是作为《JavaScript Bible》的中文译本来宣传的。结果炒啊炒的,等正式出版后,悄悄的就不再提了。但装帧上的模仿是无疑的。电子社的“宝典”系列我向来非常讨厌。那些书中有许多的原著本来是很好的书,但电子社对这批书译本的制作方式向来都是:每本书都找一、二十个甚至更多的人来翻译。结果,电子社的“宝典”系列基本上都是滥译的典型,电子社在这个系列上可谓 “毁书不倦”。在《JavaScript编程宝典》这件事上,更可以看出这个丛书的负责人的可鄙。人邮社能公开指责电子社的欺世丑行,我们读者应该为之鼓掌。

    四. 关于JavaScript书。
    个人认为,必须看的有三本,本书是其中之一。另外两本:一是犀牛书,最新的第5版已于上月上市;二是Goodmann著的《DHTML权威指南》,也是 O'Reilly的,最新的第3版将在明年1月上市。希望国内出版社尽快引进把它们引进。《DHTML权威指南》一书篇幅甚大,有1500多页,如果出中文版,恐怕出版社会找四、五个甚至更多的人来译,质量难以保证,还是出影印版的好。此外,人邮社将出的《DOM Scripting》一书也是很好的书,值得一看。
    teacher1  发表于 2006-10-30 16:25:47
  • 为什么没有源代码下载啊
    有人看见吗为什么没有源代码呢
    cyrabbit  发表于 2006-12-04 09:33:54
  • 来自[url=https://www.cnrui.cn/blog/article.asp?id=157]Clear读者blog[/url]上的评论。

    首先是推荐的这本:《JavaScript高级程序设计》

    我只能形容他是所有我看过JS书里面的极品了,虽然《AJAX in action》作者的技术更高,但是Nicholas C. Zakas却表现出他对JS更深刻的认识,所以当我看完这本书的时候,我感慨我终于找到我想要的东西了。
    teacher1  发表于 2007-06-06 01:06:14
  • 倪森读者在豆瓣上的评论
    https://www.douban.com/subject/1869705/

    书籍太多了,我们反而不能每本都详读。如果你需要全面的了解JavaScript,知道JavaScript的语法,DOM,正则表达式,事件,浏览器差异等等,那么仅仅看这本书就够了,剩下的就是需要一个api手册和不停的实践了。
    teacher1  发表于 2007-08-03 16:22:44
  • 5个星实在不能表达我对这本书的喜爱,如果可以我希望可以给50颗星!
    newhao  发表于 2007-08-11 17:23:02
  • 如题!!!
    jhlovett  发表于 2009-04-03 20:22:32
  • 这本书啥时候出第二版???
    jhlovett  发表于 2009-04-04 20:56:24