编辑推荐

  《JavaScript忍者秘籍》内容极具深度,技术含量高,作者是jQueryJavaScript库的创造者,在JS领域享有盛誉。

  JavaScript语言非常重要,相关的技术图书也很多,但没有任何一《JavaScript忍者秘籍》对JavaScript语言的重要部分(函数、闭包和原型)进行深入、全面的介绍,也没有任何一《JavaScript忍者秘籍》讲述跨浏览器代码的编写。《JavaScript忍者秘籍》是jQuery库创始人编写的一本深入剖析JavaScript语言的书。

  可以开始编写更加出彩的JavaScript应用程序了,甚至也可以编写自己的代码库和框架。

  《JavaScript忍者秘籍》包括以下内容:

  函数、对象、闭包、正则表达式等;

  正确的角度探视应用程序和库;

  现代JavaScript设计;

  处理跨浏览器开发的复杂性。

内容简介

  JavaScript语言非常重要,相关的技术图书也很多,但没有任何一《JavaScript忍者秘籍》对JavaScript语言的重要部分(函数、闭包和原型)进行深入、全面的介绍,也没有任何一《JavaScript忍者秘籍》讲述跨浏览器代码的编写。《JavaScript忍者秘籍》是jQuery库创始人编写的一本深入剖析JavaScript语言的书。  《JavaScript忍者秘籍》共分四个部分,从准入训练、见习训练、忍者训练和火影训练四个层次讲述了逐步成为JavaScript高手的全过程。《JavaScript忍者秘籍》从高级Web应用程序开发者所面临的挑战谈起,由浅入深地覆盖了测试和测试工具、函数、闭包、对象、正则表达式、定时器、运行时代码求值、with语句、跨浏览器问题、元素的特性和属性、事件处理、DOM以及CSS选择器等众多核心话题;将严谨的理论讲解和实用的代码示例相结合,引导读者更加深入地了解JavaScript的神奇,充分展示了JavaScript语言的各种特性。  《JavaScript忍者秘籍》适合具备一定的JavaScript基础知识的读者阅读,也适合从事程序设计工作并想要深入探索JavaScript语言的读者阅读。

作者简介

  JohnResig,是公认的JavaScript专家以及jQuery库的创造者。
  BearBibeault,是一名Web开发人员。他也是AjaxinPractice、PrototypeandScriptaculousinAction、以及jQueryinAction三《JavaScript忍者秘籍》的合著者。

目录

第一部分准入训练

第1章进入忍者世界 3

1.1即将探索的JavaScript

库 4

1.2理解JavaScript语言 5

1.3跨浏览器注意事项 6

1.4当前最佳实践 9

1.4.1当前最佳实践:测试 9

1.4.2当前最佳实践:性能

分析 9

1.5总结 10

第2章利用测试和调试武装

自己 11

2.1调试代码 12

2.1.1日志记录 12

2.1.2断点 14

2.2测试用例生成 15

2.3测试框架 17

2.3.1Qunit 19

2.3.2YUITest 19

2.3.3JsUnit 19

2.3.4新出的单元测试框架 20

2.4测试套件基础知识 20

2.4.1断言 20

2.4.2测试组 21

2.4.3异步测试 23

2.5总结 25

第二部分见习训练

第3章函数是根基 29

3.1函数的独特之处? 30

3.1.1JavaScript的函数式特性

为何如此重要? 31

3.1.2使用比较器进行排序 35

3.2函数声明 37

3.2.1作用域和函数 40

3.3函数调用 44

3.3.1从参数到函数形参 45

3.3.2作为函数进行调用 46

3.3.3作为方法进行调用 47

3.3.4作为构造器进行调用 49

3.3.5使用apply()和call()方法进行调用 52

3.4总结 56

第4章挥舞函数 57

4.1匿名函数 57

4.2递归 59

4.2.1普通命名函数中的

递归 60

4.2.2方法中的递归 61

4.2.3引用的丢失问题 62

4.2.4内联命名函数 64

4.2.5callee属性 66

4.3将函数视为对象 67

4.3.1函数存储 67

4.3.2自记忆函数 69

4.3.3伪造数组方法 71

4.4可变长度的参数列表 73

4.4.1使用apply()支持可变

参数 73

4.4.2函数重载 74

4.5函数判断 82

4.6总结 83

第5章闭包 85

5.1闭包是如何工作的 86

5.2使用闭包 90

5.2.1私有变量 90

5.2.2回调(Callback)与

计时器(timer) 92

5.3绑定函数上下文 95

5.4偏应用函数 98

5.5函数重载 101

5.5.1缓存记忆 101

5.5.2函数包装 104

5.6即时函数 106

5.6.1临时作用域和私有

变量 107

5.6.2循环 111

5.6.3类库包装 112

5.7总结 113

第6章原型与面向对象 115

6.1实例化和原型 116

6.1.1对象实例化 116

6.1.2通过构造器判断对象

类型 123

6.1.3继承与原型链 124

6.1.4HTMLDOM原型 128

6.2疑难陷阱 130

6.2.1扩展对象 130

6.2.2扩展数字 132

6.2.3子类化原生对象 133

6.2.4实例化问题 134

6.3编写类风格的代码 138

6.3.1检测函数是否可

序列化 141

6.3.2子类的实例化 142

6.3.3保留父级方法 142

6.4总结 144

第7章正则表达式 147

7.1为什么正则表达式

很牛 148

7.2正则表达式进阶 149

7.2.1正则表达式解释 149

7.2.2术语与操作符 150

7.3编译正则表达式 154

7.4捕获匹配的片段 156

7.4.1执行简单的捕获 157

7.4.2用全局表达式进行

匹配 158

7.4.3捕获的引用 159

7.4.4没有捕获的分组 160

7.5利用函数进行替换 161

7.6利用正则表达式解决常见

问题 164

7.6.1修剪字符串 164

7.6.2匹配换行符 166

7.6.3Unicode 166

7.6.4转义字符 167

7.7总结 168

第8章驯服线程和定时器 169

8.1定时器和线程是如何

工作的 170

8.1.1设置和清除定时器 170

8.1.2执行线程中的定时器

执行 170

8.1.3Timeout与Interval之间的区别 172

8.2定时器延迟的最小化及其

可靠性 173

8.3处理昂贵的计算

过程 176

8.4中央定时器控制 179

8.5异步测试 182

8.6总结 183

第三部分忍者训练

第9章忍者点金术:运行时代码

求值 187

9.1代码求值机制 187

9.1.1用eval()方法进行

求值 188

9.1.2用函数构造器进行

求值 191

9.1.3用定时器进行求值 191

9.1.4全局作用域内的求值

操作 192

9.1.5安全的代码求值 194

9.2函数反编译 195

9.3代码求值实战 198

9.3.1JSON转化 198

9.3.2导入有命名空间的

代码 199

9.3.3JavaScript压缩和混淆 200

9.3.4动态重写代码 202

9.3.5面向切面的脚本标签 202

9.3.6元语言和领域特定

语言 204

9.4总结 207

第10章With语句 209

10.1with是怎么回事? 210

10.1.1在with作用域内引用

属性 210

10.1.2在with作用域内进行

赋值 211

10.1.3性能方面的注意

事项 213

10.2真实示例 215

10.3导入有命名空间的

代码 217

10.4测试 217

10.5使用with进行

模板化 218

10.6总结 220

第11章开发跨浏览器

策略 223

11.1选择要支持的

浏览器 223

11.2五大开发关注点 225

11.2.1浏览器Bug和浏览器

差异 226

11.2.2浏览器bug修复 226

11.2.3与外部代码(标记)一起

共存 228

11.2.4缺失的功能 232

11.2.5回归 233

11.3实现策略 235

11.3.1安全的跨浏览器

修复 235

11.3.2对象检测 236

11.3.3特征仿真 238

11.3.4不可检测的浏览器

问题 241

11.4减少假设 243

11.5总结 244

第12章洞悉特性、属性和

样式 245

12.1DOM特性和DOM

属性 246

12.1.1跨浏览器命名 248

12.1.2命名限制 248

12.1.3XML与HTML之间的

差异 249

12.1.4自定义特性的行为 250

12.1.5性能注事事项 250

12.2跨浏览器的attribute

问题 254

12.2.1DOM中的id/name

膨胀 254

12.2.2URL规范化 256

12.2.3style特性 257

12.2.4type特性 257

12.2.5tabindex问题 258

12.2.6节点名称 259

12.3令人头疼的样式

特性 259

12.3.1样式在何处? 260

12.3.2样式属性命名 262

12.3.3float样式属性 263

12.3.4像素值的转换过程 263

12.3.5测量元素的高度和

宽度 264

12.3.6通过opacity看

透明度 268

12.3.7颜色属性 270

12.4获取计算样式 273

12.5总结 276

第四部分火影训练

第13章不老事件 281

13.1绑定和解绑事件处理

程序 282

13.2Event对象 286

13.3处理程序的管理 289

13.3.1集中存储相关信息 289

13.3.2管理事件处理程序 292

13.4事件触发 300

13.4.1自定义事件 302

13.5冒泡与委托 306

13.5.1将事件委托给祖先

元素 307

13.5.2修复浏览器的不足 307

13.6文档就绪事件(document

ready) 316

13.7总结 318

第14章DOM操作 321

14.1向DOM中注入

HTML 322

14.1.1将HTML转换成

DOM 323

14.1.2将DOM插入到

文档中 326

14.1.3脚本执行 328

14.2克隆元素 330

14.3删除元素 331

14.4文本内容 333

14.4.1设置文本 334

14.4.2获取文本 335

14.5总结 336

第15章CSS选择器引擎 337

15.1W3CSelectorsAPI 338

15.2利用XPath查找

元素 341

15.3纯DOM实现 342

15.3.1对选择器进行解析 345

15.3.2查找元素 346

15.3.3过滤结果集 347

15.3.4递归和合并 347

15.3.5自下而上的选择器

引用 348

15.4总结 350


其他推荐