《JavaScript 权威指南》第6 版是前端开发方面最有效的书籍之一。第六版增加了HTML5 和ECMAScript5 作为前端开发工具最经典、最流行的资源,语言和网页浏览器浏览器定义的JavaScript API 的指南和综合参考手册,大量实用的网页开发案例满足满足更多网络编程初学者的需求。
David Flanagan,是一名程序员,也是一名作家 。他在O’Reilly出版的其他畅销书还包括《JavaScript Pocket Reference》、《The Ruby Programming Language》、以及《Java in a Nutshell》。David毕业于麻省理工学院,获得计算机科学与工程学位。他和妻子和孩子一起生活在西雅图和温哥华之间的美国太平洋西北海岸。
前言
第1章 JavaScript概述
1.1 JavaScript语言核心
1.2 客户端JavaScript
第一部分 JavaScript 语言核心
第2章 词法结构
2.1 字符集
2.2 注释
2.3 直接量
2.4 标识符和保留字
2.5 可选的分号
第3章 类型、值和变量
3.1 数字
3.2 文本
3.3 布尔值
3.4 null和undefined
3.5 全局对象
3.6 包装对象
3.7 不可变的原始值和可变的对象引用
3.8 类型转换
3.9 变量声明
3.10 变量作用域
第4章 表达式和运算符
4.1 原始表达式
4.2 对象和数组的初始化表达式
4.3 函数定义表达式
4.4 属性访问表达式
4.5 调用表达式
4.6 对象创建表达式
4.7 运算符概述
4.8 算术表达式
4.9 关系表达式
4.10 逻辑表达式
4.11 赋值表达式
4.12 表达式计算
4.13 其他运算符
第5章 语句
5.1 表达式语句
5.2 复合语句和空语句
5.3 声明语句
5.4 条件语句
5.5 循环
5.6 跳转
5.7 其他语句类型
5.8 JavaScript语句小结
第6章 对象
6.1 创建对象
6.2 属性的查询和设置
6.3 删除属性
6.4 检测属性
6.5 枚举属性
6.6 属性getter和setter
6.7 属性的特性
6.8 对象的三个属性
6.9 序列化对象
6.10 对象方法
第7章 数组
7.1 创建数组
7.2 数组元素的读和写
7.3 稀疏数组
7.4 数组长度
7.5 数组元素的添加和删除
7.6 数组遍历
7.7 多维数组
7.8 数组方法
7.9 ECMAScript 5中的数组方法
7.10 数组类型
7.11 类数组对象
7.12 作为数组的字符串
第8章 函数
8.1 函数定义
8.2 函数调用
8.3 函数的实参和形参
8.4 作为值的函数
8.5 作为命名空间的函数
8.6 闭包
8.7 函数属性、方法和构造函数
8.8 函数式编程
第9章 类和模块
9.1 类和原型
9.2 类和构造函数
9.3 JavaScript中Java式的类继承
9.4 类的扩充
9.5 类和类型
9.6 JavaScript中的面向对象技术
9.7 子类
9.8 ECMAScript 5 中的类
9.9 模块
第10章 正则表达式的模式匹配
10.1 正则表达式的定义
10.2 用于模式匹配的String方法
10.3 RegExp对象
第11章 JavaScript的子集和扩展
11.1 JavaScript的子集
11.2 常量和局部变量
11.3 解构赋值
11.4 迭代
11.5 函数简写
11.6 多catch 从句
11.7 E4X: ECMAScript for XML
第12章 服务器端JavaScript
12.1 用Rhino脚本化Java
12.2 用Node实现异步I/O
第二部分 客户端JavaScript
第13章 Web浏览器中的JavaScript
13.1 客户端JavaScript
13.2 在HTML里嵌入JavaScript
13.3 JavaScript程序的执行
13.4 兼容性和互用性
13.5 可访问性
13.6 安全性
13.7 客户端框架
第14章 Window对象
14.1 计时器
14.2 浏览器定位和导航
14.3 浏览历史
14.4 浏览器和屏幕信息
14.5 对话框
14.6 错误处理
14.7 作为Window对象属性的文档元素
14.8 多窗口和窗体
第15章 脚本化文档
15.1 DOM概览
15.2 选取文档元素
15.3 文档结构和遍历
15.4 属性
15.5 元素的内容
15.6 创建、插入和删除节点
15.7 例子:生成目录表
15.8 文档和元素的几何形状和滚动
15.9 HTML表单
15.10 其他文档特性
第16章 脚本化CSS
16.1 CSS概览
16.2 重要的CSS属性
16.3 脚本化内联样式
16.4 查询计算出的样式
16.5 脚本化CSS类
16.6 脚本化样式表
第17章 事件处理
17.1 事件类型
17.2 注册事件处理程序
17.3 事件处理程序的调用
17.4 文档加载事件
17.5 鼠标事件
17.6 鼠标滚轮事件
17.7 拖放事件
17.8 文本事件
17.9 键盘事件
第18章 脚本化HTTP
18.1 使用XMLHttpRequest
18.2 借助发送HTTP请求:JSONP
18.3 基于服务器端推送事件的Comet技术
第19章 jQuery类库
19.1 jQuery基础
19.2 jQuery的getter和setter
19.3 修改文档结构
19.4 使用jQuery处理事件
19.5 动画效果
19.6 jQuery中的Ajax
19.7 工具函数
19.8 jQuery选择器和选取方法
19.9 jQuery的插件扩展
19.10 jQuery UI类库
第20章 客户端存储
20.1 localStorage和sessionStorage
20.2 cookie
20.3 利用IE userData持久化数据
20.4 应用程序存储和离线Web应用
第21章 多媒体和图形编程
21.1 脚本化图片
21.2 脚本化音频和视频
21.3 SVG:可伸缩的矢量图形
21.4 中的图形
第22章 HTML5 API
22.1 地理位置
22.2 历史记录管理
22.3 跨域消息传递
22.4 Web Worker
22.5 类型化数组和ArrayBuffer
22.6 Blob
22.7 文件系统API
22.8 客户端数据库
22.9 Web套接字
第三部分 JavaScript核心参考
JavaScript核心参考
第四部分 客户端JavaScript参考
客户端JavaScript参考
1章
JavaScript概述
JavaScript是面向Web的编程语言。绝大多数现代网站都使用了JavaScript,并且所有的现代Web浏览器――基于桌面系统、游戏机、平板电脑和智能手机的浏览器――均包含了JavaScript解释器。这使得JavaScript能够称得上史上使用最广泛的编程语言。JavaScript也是前端开发工程师必须掌握的三种技能之一:描述网页内容的HTML、描述网页样式的CSS以及描述网页行为的JavaScript。本书能帮助你掌握 JavaScript这门语言。
如果你有其他语言的编程经历,这会有助于你了解JavaScript是一门高端的、动态的、弱类型的编程语言,非常适合面向对象和函数式的编程风格。 JavaScript的语法源自Java,它的一等函数(first-class function)来自于Scheme,它的基于原型(prototype-based)的继承来自于Self。但使用本书学习JavaScript不必去了解那些(Java\/Scheme\/Self)语言或熟悉那些术语。
“JavaScript”这个名字经常被误解。除了语法看起来和Java类似之外,JavaScript和Java是完全不同的两种编程语言。 JavaScript早已超出了其“脚本语言”(scripting-language)本身的范畴,而成为一种集健壮性、高效性和通用性为一身的编程语言。最新的语言版本为严谨的大型软件开发定义了诸多新的特性。
JavaScript:名字和版本
JavaScript是由Web发展初期的网景(Netscape)公司创建,“JavaScript”是Sun Microsystem 公司(现在的 Oracle)的注册商标,用来特指网景(现在的Mozilla)对这门语言的实现。网景将这门语言作为标准提交给了ECMA――欧洲计算机制造协会――由于商标上的冲突,这门语言的标准版本改了一个丑陋的名字“ECMAScript”。同样由于商标的冲突,微软对这门语言的实现版本取了一个广为人知的名字“Jscript”。实际上,几乎所有人都将这门语言叫做“JavaScript”。本书也仅仅使用“ECMAScript”来指代语言标准。
在最近10年间,所有的Web浏览器都实现了第3版ECMAScript标准,我们也已经不必再去考虑版本号了:语言标准已经很稳定了,并且被几乎所有浏览器完整地实现了。最近,ECMAScript第5版定义了新的语言标准,在撰写本书时,浏览器已经开始实现它了。除了ECMAScript 3长期保留下来的特性,本书还涵盖了所有ECMAScript 5的新特性。正如我们经常将JavaScript简写成JS一样,ECMAScript 3和ECMAScript 5有时也会简写成ES3和ES5。
当我们提到这门语言本身时,通常所指的语言版本是ECMAScript 3和ECMAScript 5(ECMAScript 4 已经开发了数年,但由于太过庞大,从未发布过正式版本)。有时会看到JavaScript的版本号(比如 JavaScript 1.5或JavaScript 1.8)。这些是Mozilla的版本号:版本1.5基本上就是ECMAScript 3,后续版本包含了非标准的语言扩展(参照第11章)。最后,JavaScript解释器或者“引擎”(engine)也有版本号,比如,Google将它的JavaScript解释器叫做V8,在撰写本书时V8引擎最新版本是3.0。
为了有用起见,通常每一种编程语言都有各自的开发平台、标准库或API函数,用来提供诸如基本输入输出的功能。JavaScript语言核心针对文本、数组、日期和正则表达式的操作定义了很少的API,但是这些API不包括输入输出功能。输入和输出功能(类似网络、存储和图形相关的复杂特性)是由JavaScript所属的 “宿主环境”(host enviroment)提供的。这里所说的宿主环境通常是Web浏览器(第12章会介绍两个不基于Web浏览器的JavaScript宿主环境),本书第一部分涵盖了语言本身的特性以及少量的内置API。第二部分讲解了JavaScript如何在Web浏览器中工作,并涵盖基于浏览器的API――这部分也称做“客户端JavaScript”。
本书第三部分是核心API的参考手册。比如,在这部分,可以查找“Array”以获得JavaScript数组操作API的详细信息。第四部分是客户端JavaScript参考手册,比如,你可以在这部分查找“canvas”来获得HTML 5 元素定义的图形编程API。
本书首先讲解初级的基础部分,然后讲解更高级和更抽象的内容。本书的章节也是如此安排以便你能循序阅读。但学习一门新的编程语言绝非易事,当然要完整描述这门语言就没办法苛求知识点的循次渐进,每一种语言特性都和其他特性相互关联,本书的知识点也是前后参照的,有时参照的知识点在后续章节,有时在已经阅读的章节。本章快速介绍了语言核心部分和客户端API及其关键特性,以便你能更方便更深入地阅读理解后续章节。