经典好书
《精通JavaScript》(Pro JavaScript Techniques )高清扫描版 Amazon 五星盛誉图书[PDF]
| 下面是用户共享的文件列表,安装电驴后,您可以点击这些文件名进行下载 | |
| 精通JavaScript(图灵计算机科学丛书).pdf 详情 | 71.4MB |
| 71.4MB | |
![]()
精通JavaScript(图灵计算机科学丛书)
让你大开眼界的 JavaScript 力作
跟随 jQuery 之父到达前所未有的深度
Amazon 五星盛誉图书
此为高清扫描版
出版社 : 人民邮电出版社
系列名 :图灵程序设计丛书·Web开发系列
作者 :(美)John Resig/
本书是目前最深入的JavaScript图书,讲述了现代JavaScript的所有知识,展现了这门技术将能给网站建设带来如何丰富的体验。本书言简意赅,扩展了读者视野,并关注于基础且重要的主题--现代JavaScript是什么和不是什么,浏览器支持的当前状态,以及需要注意的陷阱等。书中所有概念都来自于现实案例的分析。
John Resig,世界级Javascript大师,著名框架jQuery的创造者,拥有多年的Web应用程序开发经验。他现在是Mozilla公司的JavaScript传道者,此前曾经在非赢利组织“每个儿童一台笔记本电脑(OLPC)”担任程序员,并在罗切斯特理工学院从事过数据挖掘方面的研究。除了jQuery之外,他还开发7Sparklines程序库、AniWiki、建模工具dModeler等许多有影响的应用程序。他的个人网站是www.ejohn.org。
本书适合各层次Web开发人员阅读。
作者前言
如果说现代Web应用中有什么不可忽视的事实,那便是 JavaScript 程序设计成为了一项必备的技能,需要聪敏而且在行的开发者。而问题在于直到最近为止,JavaScript 都被当作一个玩具式的语言——事实上它根本不是。
在本书中,我会告诉你现代的 JavaScript 开发是如何进行的,并着力于那些用来构筑专业的动态Web应用所必需的实用技能。
我会先从面向对象 JavaScript 的基础知识开始,然后介绍好的开发习惯、调试与测试技巧,再介绍DOM脚本编程与事件处理,使你了解到它们是如何 让JavaScript, CSS 与 HTML 这三者动态交互的。你将运用这些知识来构建一些改进页面的效果和有趣的交互方式。这之后,我详细地探寻 了Ajax 背后的概念,以及如何用它来改进用户体验。最后,我会展示一些 JavaScript 的未来方向——它将发展成什么样子?在本书最后提供的附录能帮助你更方便快捷地查询语法。
本书自始至终贯穿着许多实例分析与大量可以重用的函数,你可以在自己的应用程序中加以运用,以体会本书介绍的概念。这些代码应有尽有,从相册、自动完成的搜索框到一个完整的 Ajax wiki 应用程序。此外,我还提供了一系列运用现代 JavaScript 库的例子,这些库包括 Prototype, Scriptaculous 等。
只要有基本 JavaScript 经验的程序员都能够通过阅读此书了解到这些技术后面的最新技巧。我希望你能从阅读本书中获得进步,并学到成功的 JavaScript 开发者所必备的一切知识。
这本书英文名是Pro JavaScript Techniques。是jQuery之父John Resig所写的。
书中的内容确实比较高级些,并非如犀牛书般的基础参考而已。
这本书看下来的感觉就是:果然是JQ之父写的!
为什么这样说呢,因为这本书可以说是JQ的源码解读。这里的很多篇幅都可以看做JQ的一些方法的原型实现。
包括选择器,attr,insert,append,remove等,还有event注册等方法。
如果你想要体会JQ是如何炼成的,看这本书是最好不过的了,对于你对JS的理解会上一个层次,了解JQ编写的原理,体会到大师的想法。
当然看了这个之后自然就看到了比大师更大师的,Dean Edwards(http://dean.edwards.name/),这个牛人就是著名的JS压缩利器parker的作者。他写的cssQuery可以说是jQuery的最初的想法。但我们的John Resig很快发现光是选择器,比不过cssQuery,但是封装更丰富的操作那是很好很美妙的事情。
请下载后帮忙供源
使用迅雷下载或者下完就跑的请速度离开!
目录:
第一部分 认识现代JavaScript
第1章 现代JavaScript程序设计 2
1.1 面向对象的JavaScript 2
1.2 测试代码 3
1.3 打包分发 4
1.4 分离式DOM脚本编程 5
1.4.1 DOM 6
1.4.2 事件 7
1.4.3 JavaScript与CSS 8
1.5 Ajax 8
1.6 浏览器支持 11
1.7 小结 12
第二部分 专业JavaScript开发
第2章 面向对象的JavaScript 14
2.1 语言特性 14
2.1.1 引用 14
2.1.2 函数重载和类型检查 16
2.1.3 作用域 19
2.1.4 闭包 20
2.1.5 上下文对象 23
2.2 面向对象基础 24
2.2.1 对象 25
2.2.2 对象的创建 25
2.3 小结 30
第3章 创建可重用代码 31
3.1 标准化面向对象的代码 31
3.1.1 原型式继承 31
3.1.2 类式继承 32
3.1.3 Base库 35
3.1.4 Prototype库 36
3.2 打包 39
3.2.1 命名空间 40
3.2.2 清理代码 42
3.2.3 压缩 43
3.3 分发 45
3.4 小结 47
第4章 调试与测试的工具 48
4.1 调试 48
4.1.1 错误控制台 48
4.1.2 DOM查看器 52
4.1.3 Firebug 54
4.1.4 Venkman 55
4.2 测试 56
4.2.1 JSUnit 56
4.2.2 J3Unit 57
4.2.3 Test.Simple 58
4.3 小结 59
第三部分 分离式JavaScript
第5章 DOM 62
5.1 DOM简介 62
5.2 遍历DOM 62
5.2.1 处理DOM中的空格 64
5.2.2 简单的DOM遍历 66
5.2.3 绑定到每一个HTML元素 67
5.2.4 标准的DOM方法 68
5.3 等待HTML DOM的加载 69
5.3.1 等待整个页面的加载 70
5.3.2 等待大部分DOM的加载 70
5.3.3 判断DOM何时加载完毕 71
5.4 在HTML文档中查找元素 73
5.4.1 通过类的值查找元素 73
5.4.2 使用CSS选择器查找元素 74
5.4.3 XPath 76
5.5 获取元素的内容 77
5.5.1 获取元素内的文本 77
5.5.2 获取元素内的HTML 78
5.6 操作元素特性 79
5.7 修改DOM 82
5.7.1 使用DOM创建节点 83
5.7.2 插入到DOM中 83
5.7.3 注入HTML到DOM 85
5.7.4 删除DOM节点 87
5.8 小结 88
第6章 事件 89
6.1 JavaScript事件简介 89
6.1.1 异步事件与线程 89
6.1.2 事件阶段 91
6.2 常见事件特性 93
6.2.1 事件对象 93
6.2.2 this关键字 93
6.2.3 取消事件冒泡 94
6.2.4 重载浏览器的默认行为 95
6.3 绑定事件监听函数 97
6.3.1 传统绑定 98
6.3.2 DOM绑定:W3C 99
6.3.3 DOM绑定:IE 100
6.3.4 addEvent和removeEvent 100
6.4 事件类型 103
6.5 分离式脚本编程 103
6.5.1 JavaScript禁用的未雨绸缪 104
6.5.2 确保链接不依赖于JavaScript 104
6.5.3 监听CSS何时禁用 105
6.5.4 事件的亲和力 105
6.6 小结 106
第7章 JavaScript与CSS 107
7.1 访问样式信息 107
7.2 动态元素 109
7.2.1 元素的位置 109
7.2.2 元素的尺寸 115
7.2.3 元素的可见性 117
7.3 动画 119
7.3.1 滑动 119
7.3.2 渐显 119
7.4 浏览器 120
7.4.1 鼠标位置 120
7.4.2 视口 121
7.5 拖放 123
7.6 库 128
7.6.1 moo.fx和jQuery 128
7.6.2 Scriptaculous 129
7.7 小结 131
第8章 改进表单 132
8.1 表单验证 132
8.1.1 必填字段 134
8.1.2 模式匹配 136
8.1.3 规则集合 138
8.2 显示错误信息 139
8.2.1 验证 140
8.2.2 何时验证 142
8.3 可用性的提升 144
8.3.1 悬停的说明 144
8.3.2 标记必填字段 146
8.4 小结 147
第9章 制作图库 148
9.1 图库示例 148
9.1.1 Lightbox 148
9.1.2 ThickBox 150
9.2 制作图库 151
9.2.1 分离加载 154
9.2.2 半透明的覆盖层 155
9.2.3 定位盒子 157
9.2.4 导航 160
9.2.5 幻灯片 162
9.3 小结 165
第四部分 Ajax
第10章 Ajax导引 168
10.1 使用Ajax 168
10.1.1 HTTP请求 169
10.1.2 HTTP响应 173
10.2 处理响应数据 176
10.3 完整的Ajax程序包 177
10.4 数据的不同用途 179
10.4.1 基于XML的RSS Feed 179
10.4.2 HTML注入器 181
10.4.3 JSON与JavaScript:远程执行 182
10.5 小结 182
第11章 用Ajax改进blog 183
11.1 永不终止的blog 183
11.1.1 blog的模板 183
11.1.2 数据源 186
11.1.3 事件检测 187
11.1.4 请求 188
11.1.5 结果 188
11.2 实时网志 191
11.3 小结 193
第12章 自动补全的搜索 194
12.1 自动补全搜索的例子 194
12.2 制作页面 195
12.3 监听键盘输入 197
12.4 抓取结果 200
12.5 导航结果列表 202
12.5.1 键盘导航 202
12.5.2 鼠标导航 203
12.6 最终成果 203
12.7 小结 208
第13章 Ajax wiki 209
13.1 wiki是什么 209
13.2 对话数据库 209
13.3 Ajax请求 211
13.4 服务器端代码 212
13.4.1 处理请求 212
13.4.2 执行和格式化SQL 213
13.5 处理JSON响应 215
13.6 附加的案例研究:JavaScript blog 216
13.7 应用程序的代码 217
13.7.1 核心JavaScript代码 218
13.7.2 JavaScript SQL库 221
13.7.3 Ruby服务器端代码 221
13.8 小结 224
第五部分 JavaScript的未来
第14章 JavaScript路在何方 226
14.1 JavaScript 1.6与1.7 226
14.1.1 JavaScript 1.6 226
14.1.2 JavaScript 1.7 229
14.2 Web Applications 1.0 231
14.2.1 制作时钟 232
14.2.2 简单行星模拟 235
14.3 Comet 238
14.4 小结 240
第六部分 附录
附录A DOM参考手册 242
附录B 事件参考手册 257
附录C 浏览器 273
索引 275
更多相关资源 >>
这里是其它用户补充的资源(我也要补充):
最新评论
yangjia448
2009/06/30 22:10:45 62楼
举报
z_y_zhanghua
2009/07/02 11:00:56 64楼
举报
martianliu
2009/07/02 23:01:15 65楼
举报
gotoliuchao
2009/07/05 10:06:04 67楼
举报
baoyinbatu
2009/07/14 09:14:47 71楼
举报
happy_xyz001
2009/07/16 19:11:14 75楼
举报
vicysunnie
2009/07/19 15:05:41 77楼
举报
moonseeker
2009/08/09 16:09:12 83楼
举报
microsoftdu
2009/08/10 09:18:38 85楼
举报
yangyuhi
2009/08/18 15:58:57 86楼
举报
JS是基于面向对象的语言,而该书极力将JS描述成完全面向对象的语言,光是其中一些不常见的用法就将人搞得神魂颠倒。
极力不推荐初学者阅读该书,阅读完本书之后你将对JS失去兴趣...
你说的这些话,在一两年前JS框架诞生前还是有道理的,但这些话现在已经没道理了.
你的这种认识(我不是针对你一个人说的)就是大多数国人开发者对javascript的认识,这种认识就导致了javascript只会处于二流的辅助性脚本地位,所以目前流行的JS框架没有一个是国人开发的就是这个道理.
而老外用老掉牙的JS技术开发出现在令大家趋之若鹜的jQuery,Ext,protoType,以致于现在JS基础不好的人学这些框架一直无法精通. 所以为了能掌握这些热门框架,希望大家能借助这本书的机会不仅把JS知识补一补,而且能在认识上进入到一个新的台阶.
顺便说一句,javascript是基于对象的语言,而不是面向对象的语言.一词之差是有本质区别的.基于对象的简称是BO,面向对象的简称是OO.
yangyuhi
2009/08/18 16:11:09 87楼
举报
JS是基于面向对象的语言,而该书极力将JS描述成完全面向对象的语言,光是其中一些不常见的用法就将人搞得神魂颠倒。
极力不推荐初学者阅读该书,阅读完本书之后你将对JS失去兴趣...
谁说JavaScript是基于对象的语言?JavaScript的完整的面向对象的语言,书中介绍的Dojo、Prototype这些类库都是JavaScript的精髓。
javascript确实是基于对象的语言(而不是面向对象的).Dojo,ProtoType不是类库,也不是javascript的精髓,它们是用javascript开发出来的优秀框架.
小丫工作室
2009/08/18 19:10:52 89楼
举报
JS是基于面向对象的语言,而该书极力将JS描述成完全面向对象的语言,光是其中一些不常见的用法就将人搞得神魂颠倒。
极力不推荐初学者阅读该书,阅读完本书之后你将对JS失去兴趣...
谁说JavaScript是基于对象的语言?JavaScript的完整的面向对象的语言,书中介绍的Dojo、Prototype这些类库都是JavaScript的精髓。
javascript确实是基于对象的语言(而不是面向对象的).Dojo,ProtoType不是类库,也不是javascript的精髓,它们是用javascript开发出来的优秀框架.
嗯,Library和Framework总是分不太清楚,但是jQuery和Dojo应该算是框架,因为他们扩展的JavaScript语言。
Prototype和Dojo还有jQuery之于JavaScript,用“精髓”一词可能不太恰当,我的意思是说JavaScript因为他们而发扬光大,就好像Ruby on Rails之于Ruby一样。
JavaScript是一种基于原型的语言,可以参考:
http://en.wikipedia.org/wiki/Category:Prot...anguages
而“Prototype-based programming is a style of object-oriented programming”,所以JavaScript是一种面向对象的语言。只是基于原型的语言比较特殊,列表里除了JavaScript和相关的ActionScript、JScript、ECMAScript,我就只认识一个Lua了。如果总按照C++、Java等常见OOP语言的思维方式看JavaScript,当然会觉得JavaScript不是面向对象的,然后斥责JavaScript“其中一些不常见的用法就将人搞得神魂颠倒”。
如果总是按照C++、Java的思路,也不会理解函数式编程、闭包这些JavaScript里的东西。而JavaScript并不是什么老掉牙技术,他的思想是和Python和Ruby是一脉相通的,远超过C++和Java。你要是不理解他的思想,那么你就开发不出jQuery、Prototype、Dojo、Yahoo! UI Library、Ext~~
csywashington
2009/08/18 22:44:00 90楼
举报
javascript确实是基于对象的语言(而不是面向对象的).Dojo,ProtoType不是类库,也不是javascript的精髓,它们是用javascript开发出来的优秀框架.
嗯,Library和Framework总是分不太清楚,但是jQuery和Dojo应该算是框架,因为他们扩展的JavaScript语言。
Prototype和Dojo还有jQuery之于JavaScript,用“精髓”一词可能不太恰当,我的意思是说JavaScript因为他们而发扬光大,就好像Ruby on Rails之于Ruby一样。
JavaScript是一种基于原型的语言,可以参考:
http://en.wikipedia.org/wiki/Category:Prot...anguages
而“Prototype-based programming is a style of object-oriented programming”,所以JavaScript是一种面向对象的语言。只是基于原型的语言比较特殊,列表里除了JavaScript和相关的ActionScript、JScript、ECMAScript,我就只认识一个Lua了。如果总按照C++、Java等常见OOP语言的思维方式看JavaScript,当然会觉得JavaScript不是面向对象的,然后斥责JavaScript“其中一些不常见的用法就将人搞得神魂颠倒”。
如果总是按照C++、Java的思路,也不会理解函数式编程、闭包这些JavaScript里的东西。而JavaScript并不是什么老掉牙技术,他的思想是和Python和Ruby是一脉相通的,远超过C++和Java。你要是不理解他的思想,那么你就开发不出jQuery、Prototype、Dojo、Yahoo! UI Library、Ext~~
javascript是基于对象。面对对象有三大特性——封装、继承和多态。
javascript没有继承和多态。当然不能算是面对对象。
在JavaScript中,并不直接从文法上支持继承,换句话说,JavaScript没有实现“继承”的语法,从这个意义上来说,JavaScript并不是直接的面向对象的语言。
在JavaScript中,继承是通过模拟的方法来实现的。
小丫工作室
2009/08/19 01:26:06 91楼
举报
javascript是基于对象。面对对象有三大特性——封装、继承和多态。
javascript没有继承和多态。当然不能算是面对对象。
在JavaScript中,并不直接从文法上支持继承,换句话说,JavaScript没有实现“继承”的语法,从这个意义上来说,JavaScript并不是直接的面向对象的语言。
在JavaScript中,继承是通过模拟的方法来实现的。
一般程序员都是这样想的,JavaScript有类,但是不支持继承与多态,所以只有封装的语言就不是面向对象的,而是基于对象的。
如果JavaScript没有继承,那么下面的代码:
alert(str instanceof Object); //true
怎么就返回了true了?String不是继承自Object的?子类的对象也是父类的对象嘛。
下面引用一下本帖的图书《精通JavaScript》的一段话:
面向对象JavaScript这个词其实有些多余,因为JavaScript这门语言就是完全面向对象的,也不可能以非面向对象的方法来使用。
你说JavaScript没有继承的语法,而继承在JavaScript里是通过模拟的方法实现的,那是因为你用C++和Java的眼光看JavaScript,当然觉得它另类。我再引用《JavaScript语言精髓与编程实践》里的一段话:
“面向对象”有三个基本特性,即封装,继承和多态。一般来说,三个特性都完全满足的话,我们称为“面向对象语言”,而称满足其中部分特性的语言为“基于对象语言”。
“对象系统”的继承特性,有三种实现方案,包括基于类(class-based),基于原型(prototype-based)和基于元类(metaclass-based)。这三种对象模型各具特色,也各有应用。在这其中,JavaScript没有采用我们常见的类继承体系,而是使用原型继承来实现对象系统。因此JavaScript没有“类(Class)”,而采用一种名为“构造器(Constructor)”的机制来实现类的某些功用。也因此JavaScript被称为“无类语言”。
“面向对象语言”,这里面向的是对象(Object),而不叫“面向类(Class)”,并非只有类才能实现对象,所以从C++、Java的角度看JavaScript,当然觉得它是无法完全实现面向对象的,是残缺的,因为它是没有类(Class)的。
封装、继承、多态,JavaScript都有,所以JavaScript是一个彻头彻尾的,原生的面向对象语言。继承是原型继承,多态则不必说,动态语言怎么会不实现多态。反倒是封装,JavaScript做的不完善,它只能实现public和private,没法实现protected。
yangyuhi
2009/08/19 11:44:23 92楼
举报
javascript确实是基于对象的语言(而不是面向对象的).Dojo,ProtoType不是类库,也不是javascript的精髓,它们是用javascript开发出来的优秀框架.
嗯,Library和Framework总是分不太清楚,但是jQuery和Dojo应该算是框架,因为他们扩展的JavaScript语言。
Prototype和Dojo还有jQuery之于JavaScript,用“精髓”一词可能不太恰当,我的意思是说JavaScript因为他们而发扬光大,就好像Ruby on Rails之于Ruby一样。
JavaScript是一种基于原型的语言,可以参考:
http://en.wikipedia.org/wiki/Category:Prot...anguages (http://en.wikipedia.org/wiki/Category:Prototype-based_programming_languages)
而“Prototype-based programming is a style of object-oriented programming”,所以JavaScript是一种面向对象的语言。只是基于原型的语言比较特殊,列表里除了JavaScript和相关的ActionScript、JScript、ECMAScript,我就只认识一个Lua了。如果总按照C++、Java等常见OOP语言的思维方式看JavaScript,当然会觉得JavaScript不是面向对象的,然后斥责JavaScript“其中一些不常见的用法就将人搞得神魂颠倒”。
如果总是按照C++、Java的思路,也不会理解函数式编程、闭包这些JavaScript里的东西。而JavaScript并不是什么老掉牙技术,他的思想是和Python和Ruby是一脉相通的,远超过C++和Java。你要是不理解他的思想,那么你就开发不出jQuery、Prototype、Dojo、Yahoo! UI Library、Ext~~
谢谢回复,这里学习了.
lefan_3www
2009/09/03 17:20:10 94楼
举报
bin20060407
2009/10/23 00:20:42 99楼
举报
fengqipiaobo
2009/10/26 18:55:00 101楼
举报
iamgoodworld
2009/10/27 10:45:28 102楼
举报
aggressive_m
2009/10/27 20:50:01 103楼
举报
luck5227
2009/10/30 19:57:04 104楼
举报
javascript是基于对象。面对对象有三大特性——封装、继承和多态。
javascript没有继承和多态。当然不能算是面对对象。
在JavaScript中,并不直接从文法上支持继承,换句话说,JavaScript没有实现“继承”的语法,从这个意义上来说,JavaScript并不是直接的面向对象的语言。
在JavaScript中,继承是通过模拟的方法来实现的。
一般程序员都是这样想的,JavaScript有类,但是不支持继承与多态,所以只有封装的语言就不是面向对象的,而是基于对象的。
如果JavaScript没有继承,那么下面的代码:
alert(str instanceof Object); //true
怎么就返回了true了?String不是继承自Object的?子类的对象也是父类的对象嘛。
下面引用一下本帖的图书《精通JavaScript》的一段话:
面向对象JavaScript这个词其实有些多余,因为JavaScript这门语言就是完全面向对象的,也不可能以非面向对象的方法来使用。
你说JavaScript没有继承的语法,而继承在JavaScript里是通过模拟的方法实现的,那是因为你用C++和Java的眼光看JavaScript,当然觉得它另类。我再引用《JavaScript语言精髓与编程实践》里的一段话:
“面向对象”有三个基本特性,即封装,继承和多态。一般来说,三个特性都完全满足的话,我们称为“面向对象语言”,而称满足其中部分特性的语言为“基于对象语言”。
“对象系统”的继承特性,有三种实现方案,包括基于类(class-based),基于原型(prototype-based)和基于元类(metaclass-based)。这三种对象模型各具特色,也各有应用。在这其中,JavaScript没有采用我们常见的类继承体系,而是使用原型继承来实现对象系统。因此JavaScript没有“类(Class)”,而采用一种名为“构造器(Constructor)”的机制来实现类的某些功用。也因此JavaScript被称为“无类语言”。
“面向对象语言”,这里面向的是对象(Object),而不叫“面向类(Class)”,并非只有类才能实现对象,所以从C++、Java的角度看JavaScript,当然觉得它是无法完全实现面向对象的,是残缺的,因为它是没有类(Class)的。
封装、继承、多态,JavaScript都有,所以JavaScript是一个彻头彻尾的,原生的面向对象语言。继承是原型继承,多态则不必说,动态语言怎么会不实现多态。反倒是封装,JavaScript做的不完善,它只能实现public和private,没法实现protected。
长见识了,呵呵~~



























































liyu76
2009/06/26 12:01:49 55楼
举报
这是一本好书,下了来看,真的不错!