 - [美]David Flanagan.jpg)
书籍简介
本书是epub格式 。
O'Reilly Media,Inc.介绍
业界评论
译者序
前言
关于盗版
本书约定
示例代码
勘误表以及如何联系我们
致谢
第1章 JavaScript概述
1.1 JavaScript语言核心
1.2 客户端JavaScript
示例:一个JavaScript贷款计算器
第一部分 JavaScript语言核心
第2章 词法结构
2.1 字符集
2.1.1 区分大小写
2.1.2 空格、换行符和格式控制符
2.1.3 Unicode转义序列
2.1.4 标准化
2.2 注释
2.3 直接量
2.4 标识符和保留字
保留字
2.5 可选的分号
第3章 类型、值和变量
3.1 数字
3.1.1 整型直接量
3.1.2 浮点型直接量
3.1.3 JavaScript中的算术运算
3.1.4 二进制浮点数和四舍五入错误
3.1.5 日期和时间
3.2 文本
3.2.1 字符串直接量
3.2.2 转义字符
3.2.3 字符串的使用
3.2.4 模式匹配
3.3 布尔值
3.4 null和undefined
3.5 全局对象
3.6 包装对象
3.7 不可变的原始值和可变的对象引用
3.8 类型转换
3.8.1 转换和相等性
3.8.2 显式类型转换
3.8.3 对象转换为原始值
3.9 变量声明
重复的声明和遗漏的声明
3.10 变量作用域
3.10.1 函数作用域和声明提前
3.10.2 作为属性的变量
3.10.3 作用域链
第4章 表达式和运算符
4.1 原始表达式
4.2 对象和数组的初始化表达式
4.3 函数定义表达式
4.4 属性访问表达式
4.5 调用表达式
4.6 对象创建表达式
4.7 运算符概述
4.7.1 操作数的个数
4.7.2 操作数类型和结果类型
4.7.3 左值
4.7.4 运算符的副作用
4.7.5 运算符优先级
4.7.6 运算符的结合性
4.7.7 运算顺序
4.8 算术表达式
4.8.1 “+”运算符
4.8.2 一元算术运算符
4.8.3 位运算符
4.9 关系表达式
4.9.1 相等和不等运算符
4.9.2 比较运算符
4.9.3 in运算符
4.9.4 instanceof运算符
4.10 逻辑表达式
4.10.1 逻辑与(&&)
4.10.2 逻辑或(||)
4.10.3 逻辑非(!)
4.11 赋值表达式
带操作的赋值运算
4.12 表达式计算
4.12.1 eval()
4.12.2 全局eval()
4.12.3 严格eval()
4.13 其他运算符
4.13.1 条件运算符(?:)
4.13.2 typeof运算符
4.13.3 delete运算符
4.13.4 void运算符
4.13.5 逗号运算符(,)
第5章 语句
5.1 表达式语句
5.2 复合语句和空语句
5.3 声明语句
5.3.1 var
5.3.2 function
5.4 条件语句
5.4.1 if
5.4.2 else if
5.4.3 switch
5.5 循环
5.5.1 while
5.5.2 do/while
5.5.3 for
5.5.4 for/in
5.6 跳转
5.6.1 标签语句
5.6.2 break语句
5.6.3 continue语句
5.6.4 return语句
5.6.5 throw语句
5.6.6 try/catch/finally语句
5.7 其他语句类型
5.7.1 with语句
5.7.2 debugger语句
5.7.3 "use strict"
5.8 JavaScript语句小结
第6章 对象
6.1 创建对象
6.1.1 对象直接量
6.1.2 通过new创建对象
6.1.3 原型
6.1.4 Object.create()
6.2 属性的查询和设置
6.2.1 作为关联数组的对象
6.2.2 继承
6.2.3 属性访问错误
6.3 删除属性
6.4 检测属性
6.5 枚举属性
6.6 属性getter和setter
6.7 属性的特性
getter和setter的老式API
6.8 对象的三个属性
6.8.1 原型属性
6.8.2 类属性
6.8.3 可扩展性
6.9 序列化对象
6.10 对象方法
6.10.1 toString()方法
6.10.2 toLocaleString()方法
6.10.3 toJSON()方法
6.10.4 valueOf()方法
第7章 数组
7.1 创建数组
7.2 数组元素的读和写
7.3 稀疏数组
7.4 数组长度
7.5 数组元素的添加和删除
7.6 数组遍历
7.7 多维数组
7.8 数组方法
7.8.1 join()
7.8.2 reverse()
7.8.3 sort()
7.8.4 concat()
7.8.5 slice()
7.8.6 splice()
7.8.7 push()和pop()
7.8.8 unshift()和shift()
7.8.9 toString()和toLocaleString()
7.9 ECMAScript 5中的数组方法
7.9.1 forEach()
7.9.2 map()
7.9.3 filter()
7.9.4 every()和some()
7.9.5 reduce()和reduceRight()
7.9.6 indexOf()和lastIndexOf()
7.10 数组类型
7.11 类数组对象
7.12 作为数组的字符串
第8章 函数
8.1 函数定义
嵌套函数
8.2 函数调用
8.2.1 函数调用
8.2.2 方法调用
8.2.3 构造函数调用
8.2.4 间接调用
8.3 函数的实参和形参
8.3.1 可选形参
8.3.2 可变长的实参列表:实参对象
8.3.3 将对象属性用做实参
8.3.4 实参类型
8.4 作为值的函数
自定义函数属性
8.5 作为命名空间的函数
8.6 闭包
8.7 函数属性、方法和构造函数
8.7.1 length属性
8.7.2 prototype属性
8.7.3 call()方法和apply()方法
8.7.4 bind()方法
8.7.5 toString()方法
8.7.6 Function()构造函数
8.7.7 可调用的对象
8.8 函数式编程
8.8.1 使用函数处理数组
8.8.2 高阶函数
8.8.3 不完全函数
8.8.4 记忆
第9章 类和模块
9.1 类和原型
9.2 类和构造函数
9.2.1 构造函数和类的标识
9.2.2 constructor属性
9.3 JavaScript中Java式的类继承
9.4 类的扩充
9.5 类和类型
9.5.1 instanceof运算符
9.5.2 constructor属性
9.5.3 构造函数的名称
9.5.4 鸭式辩型
9.6 JavaScript中的面向对象技术
9.6.1 一个例子:集合类
9.6.2 一个例子:枚举类型
9.6.3 标准转换方法
9.6.4 比较方法
9.6.5 方法借用
9.6.6 私有状态
9.6.7 构造函数的重载和工厂方法
9.7 子类
9.7.1 定义子类
9.7.2 构造函数和方法链
9.7.3 组合vs子类
9.7.4 类的层次结构和抽象类
9.8 ECMAScript 5中的类
9.8.1 让属性不可枚举
9.8.2 定义不可变的类
9.8.3 封装对象状态
9.8.4 防止类的扩展
9.8.5 子类和ECMAScript 5
9.8.6 属性描述符
9.9 模块
9.9.1 用做命名空间的对象
9.9.2 作为私有命名空间的函数
第10章 正则表达式的模式匹配
10.1 正则表达式的定义
10.1.1 直接量字符
10.1.2 字符类
10.1.3 重复
10.1.4 选择、分组和引用
10.1.5 指定匹配位置
10.1.6 修饰符
10.2 用于模式匹配的String方法
10.3 RegExp对象
10.3.1 RegExp的属性
10.3.2 RegExp的方法
第11章 JavaScript的子集和扩展
11.1 JavaScript的子集
11.1.1 精华
11.1.2 子集的安全性
11.2 常量和局部变量
11.3 解构赋值
11.4 迭代
11.4.1 for/each循环
11.4.2 迭代器
11.4.3 生成器
11.4.4 数组推导
11.4.5 生成器表达式
11.5 函数简写
11.6 多catch从句
11.7 E4X:ECMAScript for XML
第12章 服务器端JavaScript
12.1 用Rhino脚本化Java
Rhino示例
12.2 用Node实现异步I/O
12.2.1 Node示例:HTTP服务器
12.2.2 Node示例:HTTP客户端工具模块
第二部分 客户端JavaScript
第13章 Web浏览器中的JavaScript
13.1 客户端JavaScript
13.1.1 Web文档里的JavaScript
13.1.2 Web应用里的JavaScript
13.2 在HTML里嵌入JavaScript
13.2.1 <script>元素
13.2.2 外部文件中的脚本
13.2.3 脚本类型
13.2.4 HTML中的事件处理程序
13.2.5 URL中的JavaScript
13.3 JavaScript程序的执行
13.3.1 同步、异步和延迟的脚本
13.3.2 事件驱动的JavaScript
13.3.3 客户端JavaScript线程模型
13.3.4 客户端JavaScript时间线
13.4 兼容性和互用性
13.4.1 处理兼容性问题的类库
13.4.2 分级浏览器支持
13.4.3 功能测试
13.4.4 怪异模式和标准模式
13.4.5 浏览器测试
13.4.6 Internet Explorer里的条件注释
13.5 可访问性
13.6 安全性
13.6.1 JavaScript不能做什么
13.6.2 同源策略
13.6.3 脚本化插件和ActiveX控件
13.6.4 跨站脚本
13.6.5 拒绝服务攻击
13.7 客户端框架
第14章 Window对象
14.1 计时器
14.2 浏览器定位和导航
14.2.1 解析URL
14.2.2 载入新的文档
14.3 浏览历史
14.4 浏览器和屏幕信息
14.4.1 Navigator对象
14.4.2 Screen对象
14.5 对话框
14.6 错误处理
14.7 作为Window对象属性的文档元素
14.8 多窗口和窗体
14.8.1 打开和关闭窗口
14.8.2 窗体之间的关系
14.8.3 交互窗口中的JavaScript
第15章 脚本化文档
15.1 DOM概览
15.2 选取文档元素
15.2.1 通过ID选取元素
15.2.2 通过名字选取元素
15.2.3 通过标签名选取元素
15.2.4 通过CSS类选取元素
15.2.5 通过CSS选择器选取元素
15.2.6 document.all[]
15.3 文档结构和遍历
15.3.1 作为节点树的文档
15.3.2 作为元素树的文档
15.4 属性
15.4.1 HTML属性作为Element的属性
15.4.2 获取和设置非标准HTML属性
15.4.3 数据集属性
15.4.4 作为Attr节点的属性
15.5 元素的内容
15.5.1 作为HTML的元素内容
15.5.2 作为纯文本的元素内容
15.5.3 作为Text节点的元素内容
15.6 创建、插入和删除节点
15.6.1 创建节点
15.6.2 插入节点
15.6.3 删除和替换节点
15.6.4 使用DocumentFragment
15.7 例子:生成目录表
15.8 文档和元素的几何形状和滚动
15.8.1 文档坐标和视口坐标
15.8.2 查询元素的几何尺寸
15.8.3 判定元素在某点
15.8.4 滚动
15.8.5 关于元素尺寸、位置和溢出的更多信息
15.9 HTML表单
15.9.1 选取表单和表单元素
15.9.2 表单和元素的属性
15.9.3 表单和元素的事件处理程序
15.9.4 按钮
15.9.5 开关按钮
15.9.6 文本域
15.9.7 选择框和选项元素
15.10 其他文档特性
15.10.1 Document的属性
15.10.2 document.write()方法
15.10.3 查询选取的文本
15.10.4 可编辑的内容
第16章 脚本化CSS
16.1 CSS概览
16.1.1 层叠
16.1.2 CSS历史
16.1.3 复合属性
16.1.4 非标准属性
16.1.5 CSS举例
16.2 重要的CSS属性
16.2.1 用CSS定位元素
16.2.2 边框、外边距和内边距
16.2.3 CSS盒模型和定位细节
16.2.4 元素显示和可见性
16.2.5 颜色、透明度和半透明度
16.2.6 部分可见:overflow和clip
16.2.7 示例:重叠半透明窗口
16.3 脚本化内联样式
CSS动画
16.4 查询计算出的样式
16.5 脚本化CSS类
16.6 脚本化样式表
16.6.1 开启和关闭样式表
16.6.2 查询、插入与删除样式表规则
16.6.3 创建新样式表
第17章 事件处理
17.1 事件类型
17.1.1 传统事件类型
17.1.2 DOM事件
17.1.3 HTML5事件
17.1.4 触摸屏和移动设备事件
17.2 注册事件处理程序
17.2.1 设置JavaScript对象属性为事件处理程序
17.2.2 设置HTML标签属性为事件处理程序
17.2.3 addEventListener()
17.2.4 attachEvent()
17.3 事件处理程序的调用
17.3.1 事件处理程序的参数
17.3.2 事件处理程序的运行环境
17.3.3 事件处理程序的作用域
17.3.4 事件处理程序的返回值
17.3.5 调用顺序
17.3.6 事件传播
17.3.7 事件取消
17.4 文档加载事件
17.5 鼠标事件
17.6 鼠标滚轮事件
17.7 拖放事件
17.8 文本事件
17.9 键盘事件
第18章 脚本化HTTP
18.1 使用XMLHttpRequest
18.1.1 指定请求
18.1.2 取得响应
18.1.3 编码请求主体
18.1.4 HTTP进度事件
18.1.5 中止请求和超时
18.1.6 跨域HTTP请求
18.2 借助<script>发送HTTP请求:JSONP
18.3 基于服务器端推送事件的Comet技术
第19章 jQuery类库
19.1 jQuery基础
19.1.1 jQuery()函数
19.1.2 查询与查询结果
19.2 jQuery的getter和setter
19.2.1 获取和设置HTML属性
19.2.2 获取和设置CSS属性
19.2.3 获取和设置CSS类
19.2.4 获取和设置HTML表单值
19.2.5 设置和获取元素内容
19.2.6 获取和设置元素的位置高宽
19.2.7 获取和设置元素数据
19.3 修改文档结构
19.3.1 插入和替换元素
19.3.2 复制元素
19.3.3 包装元素
19.3.4 删除元素
19.4 使用jQuery处理事件
19.4.1 事件处理程序的简单注册
19.4.2 jQuery事件处理程序
19.4.3 jQuery事件对象
19.4.4 事件处理程序的高级注册
19.4.5 注销事件处理程序
19.4.6 触发事件
19.4.7 自定义事件
19.4.8 实时事件
19.5 动画效果
19.5.1 简单动画
19.5.2 自定义动画
19.5.3 动画的取消、延迟和队列
19.6 jQuery中的Ajax
19.6.1 load()方法
19.6.2 Ajax工具函数
19.6.3 jQuery.ajax()函数
19.6.4 Ajax事件
19.7 工具函数
19.8 jQuery选择器和选取方法
19.8.1 jQuery选择器
19.8.2 选取方法
19.9 jQuery的插件扩展
19.10 jQuery UI类库
第20章 客户端存储
20.1 localStorage和sessionStorage
20.1.1 存储有效期和作用域
20.1.2 存储API
20.1.3 存储事件
20.2 cookie
20.2.1 cookie属性:有效期和作用域
20.2.2 保存cookie
20.2.3 读取cookie
20.2.4 cookie的局限性
20.2.5 cookie相关的存储
20.3 利用IE userData持久化数据
20.4 应用程序存储和离线Web应用
20.4.1 应用程序缓存清单
20.4.2 缓存的更新
20.4.3 离线Web应用
第21章 多媒体和图形编程
21.1 脚本化图片
优雅的图片翻转实现方式
21.2 脚本化音频和视频
21.2.1 类型选择和加载
21.2.2 控制媒体播放
21.2.3 查询媒体状态
21.2.4 媒体相关事件
21.3 SVG:可伸缩的矢量图形
21.4 <canvas>中的图形
21.4.1 绘制线段和填充多边形
21.4.2 图形属性
21.4.3 画布的尺寸和坐标
21.4.4 坐标系变换
21.4.5 绘制和填充曲线
21.4.6 矩形
21.4.7 颜色、透明度、渐变以及图案
21.4.8 线段绘制相关的属性
21.4.9 文本
21.4.10 裁剪
21.4.11 阴影
21.4.12 图片
21.4.13 合成
21.4.14 像素操作
21.4.15 命中检测
21.4.16 画布例子:迷你图
第22章 HTML5 API
22.1 地理位置
22.2 历史记录管理
22.3 跨域消息传递
22.4 Web Worker
22.4.1 Worker对象
22.4.2 Worker作用域
22.4.3 Web Worker的例子
22.5 类型化数组和ArrayBuffer
22.6 Blob
22.6.1 文件作为Blob
22.6.2 下载Blob
22.6.3 构造Blob
22.6.4 Blob URL
22.6.5 读取Blob
22.7 文件系统API
22.8 客户端数据库
22.9 Web套接字
第三部分 JavaScript核心参考
JavaScript核心参考
arguments[]
Arguments
Arguments.callee
Arguments.length
Array
Array.concat()
Array.every()
Array.filter()
Array.forEach()
Array.indexOf()
Array.join()
Array.lastIndexOf()
Array.length
Array.map()
Array.pop()
Array.push()
Array.reduce()
Array.reduceRight()
Array.reverse()
Array.shift()
Array.slice()
Array.some()
Array.sort()
Array.splice()
Array.toLocaleString()
Array.toString()
Array.unshift()
Boolean
Boolean.toString()
Boolean.valueOf()
Date
Date.getDate()
Date.getDay()
Date.getFullYear()
Date.getHours()
Date.getMilliseconds()
Date.getMinutes()
Date.getMonth()
Date.getSeconds()
Date.getTime()
Date.getTimezoneOffset()
Date.getUTCDate()
Date.getUTCDay()
Date.getUTCFullYear()
Date.getUTCHours()
Date.getUTCMilliseconds()
Date.getUTCMinutes()
Date.getUTCMonth()
Date.getUTCSeconds()
Date.getYear()
Date.now()
Date.parse()
Date.setDate()
Date.setFullYear()
Date.setHours()
Date.setMilliseconds()
Date.setMinutes()
Date.setMonth()
Date.setSeconds()
Date.setTime()
Date.setUTCDate()
Date.setUTCFullYear()
Date.setUTCHours()
Date.setUTCMilliseconds()
Date.setUTCMinutes()
Date.setUTCMonth()
Date.setUTCSeconds()
Date.setYear()
Date.toDateString()
Date.toGMTString()
Date.toISOString()
Date.toJSON
Date.toLocaleDateString()
Date.toLocaleString()
Date.toLocaleTimeString()
Date.toString()
Date.toTimeString()
Date.toUTCString()
Date.UTC()
Date.valueOf()
decodeURI()
decodeURIComponent()
encodeURI()
encodeURIComponent()
Error
Error.message
Error.name
Error.toString()
escape()
eval()
EvalError
Function
Function.apply()
Function.arguments[]
Function.bind()
Function.call()
Function.caller()
Function.length()
Function.prototype()
Function.toString()
Global
Infinity
isFinite()
isNaN()
JSON
JSON.parse()
JSON.stringify()
Math
Math.abs()
Math.acos()
Math.asin()
Math.atan()
Math.atan2()
Math.ceil()
Math.cos()
Math.E
Math.exp()
Math.floor()
Math.LN10
Math.LN2
Math.log()
Math.LOG10E
Math.LOG2E
Math.max()
Math.min()
Math.PI
Math.pow()
Math.random()
Math.round()
Math.sin()
Math.sqrt()
Math.SQRT1_2
Math.SQRT2
Math.tan()
NaN
Number
Number.MAX_VALUE
Number.MIN_VALUE
Number.NaN
Number.NEGATIVE_INFINITY
Number.POSITIVE_INFINITY
Number.toExponential()
Number.toFixed()
Number.toLocaleString()
Number.toPrecision()
Number.toString()
Number.valueOf()
Object
Object.constructor
Object.create()
Object.defineProperties()
Object.defineProperty()
Object.freeze()
Object.getOwnPropertyDescriptor()
Object.getOwnPropertyNames()
Object.getPrototypeOf()
Object.hasOwnProperty()
Object.isExtensible()
Object.isFrozen()
Object.isPrototypeOf()
Object.isSealed()
Object.keys()
Object.preventExtensions()
Object.propertyIsEnumerable()
Object.seal()
Object.toLocaleString()
Object.toString()
Object.valueOf()
parseFloat()
parseInt()
RangeError
ReferenceError
RegExp
RegExp.exec()
RegExp.global
RegExp.ignoreCase
RegExp.lastIndex
RegExp.source
RegExp.test()
RegExp.toString()
String
String.charAt()
String.charCodeAt()
String.concat()
String.fromCharCode()
String.indexOf()
String.lastIndexOf()
String.length
String.localeCompare()
String.match()
String.replace()
String.search()
String.slice()
String.split()
String.substr()
String.substring()
String.toLocaleLowerCase()
String.toLocaleUpperCase()
String.toLowerCase()
String.toString()
String.toUpperCase()
String.trim()
String.valueOf()
SyntaxError
TypeError
undefined
unescape()
URIError
第四部分 客户端JavaScript参考
客户端JavaScript参考
ApplicationCache
ArrayBuffer
ArrayBufferView
Attr
Audio
BeforeUnloadEvent
Blob
BlobBuilder
Button
Canvas
CanvasGradient
CanvasPattern
CanvasRenderingContext2D
ClientRect
CloseEvent
Comment
Console
ConsoleCommandLine
CSS2Properties
CSSRule
CSSStyleDeclaration
CSSStyleSheet
DataTransfer
DataView
Document
DocumentFragment
DocumentType
DOMException
DOMImplementation
DOMSettableTokenList
DOMTokenList
Element
ErrorEvent
Event
EventSource
EventTarget
FieldSet
File
FileError
FileReader
FileReaderSync
Form
FormControl
FormData
FormValidity
Geocoordinates
Geolocation
GeolocationError
Geoposition
HashChangeEvent
History
HTMLCollection
HTMLDocument
HTMLElement
HTMLFormControlsCollection
HTMLOptionsCollection
IFrame
Image
ImageData
Input
jQuery
KeyEvent
Label
Link
Location
MediaElement
MediaError
MessageChannel
MessageEvent
MessagePort
Meter
MouseEvent
Navigator
Node
NodeList
Option
Output
PageTransitionEvent
PopStateEvent
ProcessingInstruction
Progress
ProgressEvent
Screen
Script
Select
Storage
StorageEvent
Style
Table
TableCell
TableRow
TableSection
Text
TextArea
TextMetrics
TimeRanges
TypedArray
URL
Video
WebSocket
Window
Worker
WorkerGlobalScope
WorkerLocation
WorkerNavigator
XMLHttpRequest
XMLHttpRequestUpload
作者介绍
封面介绍
译者简介