书籍详情
JavaScript面向对象编程指南 第3版
作者:[印] 韦德·安塔尼(Ved Antani)[意]斯托扬·斯特凡诺夫 著,余博伦 译
出版社:人民邮电出版社
出版时间:2021-12-01
ISBN:9787115544377
定价:¥139.80
购买这本书可以去
内容简介
JavaScript语言是一种具有高度表达能力的、基于原型特性的、非常灵活的面向对象(Object-Oriented,OO)编程语言。本书着重于介绍JavaScript在面向对象方面的特性,以为你展示如何构建强健、可维护、功能强大的应用程序及程序库。本书是《JavaScript面向对象编程指南》的第3版,全书包括13章和4个附录。依次介绍了JavaScript的发展历史、基础知识(变量、数据类型、数组、循环以及条件表达式等)、函数、对象、迭代器和生成器、原型、继承的实现、类与模块、Promise与Proxy、浏览器环境、编程模式与设计模式、测试与调试和响应式编程等。附录部分包括学习JavaScript编程常用的参考资源。本书覆盖了JavaScript语言的OO特性,同时兼顾基础知识,对初学者来说,是难得的JavaScript佳作,读者不需要具备任何JavaScript基础知识及项目经验。本书适用于任何希望学习JavaScript的编程初学者,也可以作为有JavaScript使用经验的读者的参考书。
作者简介
Veb Antani 拥有多年的使用JavaScript、Go以及Java开发大型服务器端及移动的平台的经验。Stoyan Stefanov是Facebook公司工程师、作家、演说家。他经常会在博客和相关会议中就Web开发话题发表独到见解。
目录
第 1章 JavaScript面向对象 1
1.1 回顾历史 2
1.1.1 浏览器之争 3
1.1.2 了解现状 4
1.1.3 展望未来 5
1.2 ECMAScript 5 5
1.3 ECMAScript 6 6
1.3.1 ES6的浏览器支持情况 7
1.3.2 Babel 7
1.4 面向对象编程 9
1.4.1 对象 9
1.4.2 类 10
1.4.3 封装 10
1.4.4 聚合 11
1.4.5 继承 12
1.4.6 多态 12
1.5 OOP小结 12
1.6 配置练习环境 13
1.6.1 WebKit开发者工具 14
1.6.2 Mac上的JavaScriptCore 15
1.6.3 其他控制台 16
1.7 小结 17
第 2章 基本数据类型、数组、循环及条件表达式 18
2.1 变量 18
2.2 操作符 22
2.3 基本数据类型 25
2.3.1 查看类型操作符—typeof 25
2.3.2 数字 26
2.3.3 字符串 32
2.3.4 布尔值 38
2.3.5 undefined与null 44
2.3.6 Symbol 46
2.4 基本数据类型综述 46
2.5 数组 47
2.5.1 增加、更新数组元素 48
2.5.2 删除元素 49
2.5.3 数组的数组 49
2.6 条件与循环 51
2.6.1 代码块 51
2.6.2 循环 58
2.7 注释 63
2.8 练习题 64
2.9 小结 64
第3章 函数 66
3.1 什么是函数 67
3.1.1 调用函数 67
3.1.2 参数 68
3.2 默认参数 70
3.3 剩余参数 71
3.4 展开操作符 71
3.5 变量的作用域 78
3.6 块作用域 81
3.7 函数也是数据 83
3.7.1 匿名函数 84
3.7.2 回调函数 85
3.7.3 即时函数 88
3.7.4 内部(私有)函数 90
3.7.5 返回函数的函数 91
3.7.6 能重写自己的函数 91
3.8 闭包 93
3.8.1 作用域链 93
3.8.2 利用闭包突破作用域链 94
3.8.3 循环中的闭包 98
3.8.4 getter与setter 100
3.8.5 迭代器 102
3.9 IIFE与作用域 103
3.10 箭头函数 103
3.11 练习题 104
3.12 小结 105
第4章 对象 107
4.1 从数组到对象 107
4.1.1 元素、属性、方法与成员 109
4.1.2 哈希表和关联型数组 110
4.1.3 访问对象属性 110
4.1.4 调用对象方法 112
4.1.5 修改属性与方法 113
4.1.6 使用this值 114
4.1.7 构造器函数 115
4.1.8 全局对象 116
4.1.9 构造器属性 118
4.1.10 instanceof操作符 119
4.1.11 返回对象的函数 119
4.1.12 传递对象 121
4.1.13 比较对象 121
4.1.14 Webkit控制台中的对象 122
4.1.15 ES6对象语法 124
4.2 对象属性与类型 125
4.3 ES6对象方法 126
4.3.1 使用Object.assign复制对象属性 126
4.3.2 使用Object.is方法进行比较 127
4.4 解构赋值 128
4.5 内建对象 130
4.5.1 Object 131
4.5.2 Array() 132
4.6 ES6中的数组方法 137
4.6.1 Array.from 137
4.6.2 使用Array.of创建数组 138
4.6.3 Array.prototype方法 139
4.6.4 函数 140
4.7 箭头函数中的this 146
4.7.1 推断对象类型 147
4.7.2 Boolean 148
4.7.3 Number 150
4.7.4 String 151
4.7.5 Math 157
4.7.6 Date 159
4.7.7 RegExp 164
4.8 练习题 174
4.9 小结 176
第5章 ES6中的迭代器和生成器 178
5.1 for...of循环结构 178
5.2 迭代器与可迭代对象 179
5.2.1 迭代器 179
5.2.2 可迭代对象 180
5.3 生成器 181
5.4 集合 185
5.4.1 Map 185
5.4.2 Set 189
5.4.3 WeakMap和WeakSet 189
5.5 小结 190
第6章 原型 191
6.1 原型属性 192
6.2 使用原型的方法与属性 193
6.2.1 自身属性与原型属性 195
6.2.2 利用自身属性覆写原型属性 196
6.2.3 isPrototypeOf()方法 200
6.2.4 秘密的__proto__链接 201
6.3 扩展内建对象 203
6.3.1 关于扩展内建对象的讨论 204
6.3.2 原型陷阱 205
6.4 练习题 207
6.5 小结 208
第7章 继承 210
7.1 原型链 210
7.1.1 原型链示例 211
7.1.2 将共享属性迁移到原型中去 214
7.2 只继承于原型 217
7.3 uber—子对象访问父对象的方式 220
7.4 将继承部分封装成函数 222
7.5 属性复制 224
7.6 小心处理引用复制 226
7.7 对象之间的继承 229
7.8 深复制 231
7.9 object() 233
7.10 原型继承与属性复制的混合应用 234
7.11 多重继承 236
7.12 寄生式继承 238
7.13 构造器借用 239
7.14 案例学习:图形绘制 242
7.14.1 分析 243
7.14.2 实现 243
7.14.3 测试 248
7.15 练习题 249
7.16 小结 250
第8章 类与模块 255
8.1 定义类 257
8.1.1 构造器 259
8.1.2 原型方法 259
8.1.3 静态方法 260
8.1.4 静态属性 261
8.1.5 生成器方法 261
8.2 子类化 261
8.3 模块 264
8.4 小结 268
第9章 Promise与Proxy 269
9.1 异步编程模型 270
9.2 JavaScript调用栈 272
9.2.1 消息队列 273
9.2.2 事件循环 273
9.2.3 计时器 273
9.3 Promise 276
9.3.1 创建Promise 278
9.3.2 元编程与Proxy 280
9.3.3 Proxy 281
9.3.4 函数拦截 282
9.4 小结 283
第 10章 浏览器环境 285
10.1 在HTML页面中引入JavaScript代码 285
10.2 BOM与DOM概览 286
10.3 BOM 287
10.3.1 window对象再探 287
10.3.2 window.navigator属性 288
10.3.3 控制台的备忘功能 289
10.3.4 window.location属性 289
10.3.5 window.history属性 290
10.3.6 window.frames属性 292
10.3.7 window.screen属性 293
10.3.8 window.open()/close()方法 294
10.3.9 window.moveTo()方法和window.resizeTo()方法 295
10.3.10 window.alert()、window.prompt()和window.confirm()方法 295
10.3.11 window.setTimeout()和window.setInterval()方法 297
10.3.12 window.document属性 299
10.4 DOM 299
10.4.1 Core DOM与HTML DOM 301
10.4.2 DOM节点的访问 303
10.4.3 DOM节点的修改 312
10.4.4 新建节点 315
10.4.5 移除节点 319
10.4.6 只适用于HTML的DOM对象 321
10.5 事件 324
10.5.1 内联HTML属性法 324
10.5.2 元素属性法 325
10.5.3 DOM的事件监听器 325
10.5.4 捕获法与冒泡法 327
10.5.5 阻断传播 328
10.5.6 防止默认行为 330
10.5.7 跨浏览器的事件监听器 330
10.5.8 事件类型 332
10.6 XMLHttpRequest对象 333
10.6.1 发送请求 334
10.6.2 处理响应 335
10.6.3 在早于IE 7的版本中创建XMLHttpRequest对象 336
10.6.4 A代表异步 337
10.6.5 X代表XML 338
10.6.6 示例 338
10.7 练习题 340
10.8 小结 342
第 11章 编程模式与设计模式 345
11.1 编程模式 346
11.1.1 行为隔离 346
11.1.2 命名空间 349
11.1.3 初始化时分支 352
11.1.4 惰性初始 353
11.1.5 配置对象 354
11.1.6 私有属性和方法 356
11.1.7 特权方法 357
11.1.8 私有函数的公有化 357
11.1.9 即时函数 358
11.1.10 模块 359
11.1.11 链式调用 360
11.1.12 JSON 361
11.1.13 高阶函数 363
11.2 设计模式 364
11.2.1 单例模式1 365
11.2.2 单例模式2 365
11.2.3 工厂模式 367
11.2.4 装饰器模式 369
11.2.5 装饰一棵圣诞树 370
11.3 观察者模式 371
11.4 小结 374
第 12章 测试与调试 375
12.1 单元测试 376
12.1.1 测试驱动开发 376
12.1.2 行为驱动测试 377
12.1.3 mocha、chai以及sinon 382
12.2 调试JavaScript 382
12.2.1 语法错误 382
12.2.2 运行时异常 383
12.3 小结 388
第 13章 响应式编程与React 390
13.1 响应式编程 390
13.2 React 393
13.3 虚拟DOM 393
13.4 React的安装及运行 394
13.4.1 组件与props 398
13.4.2 state 399
13.4.3 生命周期函数 401
13.5 小结 402
附录A 保留字 403
附录B 内建函数 407
附录C 内建对象 410
附录D 正则表达式 453
1.1 回顾历史 2
1.1.1 浏览器之争 3
1.1.2 了解现状 4
1.1.3 展望未来 5
1.2 ECMAScript 5 5
1.3 ECMAScript 6 6
1.3.1 ES6的浏览器支持情况 7
1.3.2 Babel 7
1.4 面向对象编程 9
1.4.1 对象 9
1.4.2 类 10
1.4.3 封装 10
1.4.4 聚合 11
1.4.5 继承 12
1.4.6 多态 12
1.5 OOP小结 12
1.6 配置练习环境 13
1.6.1 WebKit开发者工具 14
1.6.2 Mac上的JavaScriptCore 15
1.6.3 其他控制台 16
1.7 小结 17
第 2章 基本数据类型、数组、循环及条件表达式 18
2.1 变量 18
2.2 操作符 22
2.3 基本数据类型 25
2.3.1 查看类型操作符—typeof 25
2.3.2 数字 26
2.3.3 字符串 32
2.3.4 布尔值 38
2.3.5 undefined与null 44
2.3.6 Symbol 46
2.4 基本数据类型综述 46
2.5 数组 47
2.5.1 增加、更新数组元素 48
2.5.2 删除元素 49
2.5.3 数组的数组 49
2.6 条件与循环 51
2.6.1 代码块 51
2.6.2 循环 58
2.7 注释 63
2.8 练习题 64
2.9 小结 64
第3章 函数 66
3.1 什么是函数 67
3.1.1 调用函数 67
3.1.2 参数 68
3.2 默认参数 70
3.3 剩余参数 71
3.4 展开操作符 71
3.5 变量的作用域 78
3.6 块作用域 81
3.7 函数也是数据 83
3.7.1 匿名函数 84
3.7.2 回调函数 85
3.7.3 即时函数 88
3.7.4 内部(私有)函数 90
3.7.5 返回函数的函数 91
3.7.6 能重写自己的函数 91
3.8 闭包 93
3.8.1 作用域链 93
3.8.2 利用闭包突破作用域链 94
3.8.3 循环中的闭包 98
3.8.4 getter与setter 100
3.8.5 迭代器 102
3.9 IIFE与作用域 103
3.10 箭头函数 103
3.11 练习题 104
3.12 小结 105
第4章 对象 107
4.1 从数组到对象 107
4.1.1 元素、属性、方法与成员 109
4.1.2 哈希表和关联型数组 110
4.1.3 访问对象属性 110
4.1.4 调用对象方法 112
4.1.5 修改属性与方法 113
4.1.6 使用this值 114
4.1.7 构造器函数 115
4.1.8 全局对象 116
4.1.9 构造器属性 118
4.1.10 instanceof操作符 119
4.1.11 返回对象的函数 119
4.1.12 传递对象 121
4.1.13 比较对象 121
4.1.14 Webkit控制台中的对象 122
4.1.15 ES6对象语法 124
4.2 对象属性与类型 125
4.3 ES6对象方法 126
4.3.1 使用Object.assign复制对象属性 126
4.3.2 使用Object.is方法进行比较 127
4.4 解构赋值 128
4.5 内建对象 130
4.5.1 Object 131
4.5.2 Array() 132
4.6 ES6中的数组方法 137
4.6.1 Array.from 137
4.6.2 使用Array.of创建数组 138
4.6.3 Array.prototype方法 139
4.6.4 函数 140
4.7 箭头函数中的this 146
4.7.1 推断对象类型 147
4.7.2 Boolean 148
4.7.3 Number 150
4.7.4 String 151
4.7.5 Math 157
4.7.6 Date 159
4.7.7 RegExp 164
4.8 练习题 174
4.9 小结 176
第5章 ES6中的迭代器和生成器 178
5.1 for...of循环结构 178
5.2 迭代器与可迭代对象 179
5.2.1 迭代器 179
5.2.2 可迭代对象 180
5.3 生成器 181
5.4 集合 185
5.4.1 Map 185
5.4.2 Set 189
5.4.3 WeakMap和WeakSet 189
5.5 小结 190
第6章 原型 191
6.1 原型属性 192
6.2 使用原型的方法与属性 193
6.2.1 自身属性与原型属性 195
6.2.2 利用自身属性覆写原型属性 196
6.2.3 isPrototypeOf()方法 200
6.2.4 秘密的__proto__链接 201
6.3 扩展内建对象 203
6.3.1 关于扩展内建对象的讨论 204
6.3.2 原型陷阱 205
6.4 练习题 207
6.5 小结 208
第7章 继承 210
7.1 原型链 210
7.1.1 原型链示例 211
7.1.2 将共享属性迁移到原型中去 214
7.2 只继承于原型 217
7.3 uber—子对象访问父对象的方式 220
7.4 将继承部分封装成函数 222
7.5 属性复制 224
7.6 小心处理引用复制 226
7.7 对象之间的继承 229
7.8 深复制 231
7.9 object() 233
7.10 原型继承与属性复制的混合应用 234
7.11 多重继承 236
7.12 寄生式继承 238
7.13 构造器借用 239
7.14 案例学习:图形绘制 242
7.14.1 分析 243
7.14.2 实现 243
7.14.3 测试 248
7.15 练习题 249
7.16 小结 250
第8章 类与模块 255
8.1 定义类 257
8.1.1 构造器 259
8.1.2 原型方法 259
8.1.3 静态方法 260
8.1.4 静态属性 261
8.1.5 生成器方法 261
8.2 子类化 261
8.3 模块 264
8.4 小结 268
第9章 Promise与Proxy 269
9.1 异步编程模型 270
9.2 JavaScript调用栈 272
9.2.1 消息队列 273
9.2.2 事件循环 273
9.2.3 计时器 273
9.3 Promise 276
9.3.1 创建Promise 278
9.3.2 元编程与Proxy 280
9.3.3 Proxy 281
9.3.4 函数拦截 282
9.4 小结 283
第 10章 浏览器环境 285
10.1 在HTML页面中引入JavaScript代码 285
10.2 BOM与DOM概览 286
10.3 BOM 287
10.3.1 window对象再探 287
10.3.2 window.navigator属性 288
10.3.3 控制台的备忘功能 289
10.3.4 window.location属性 289
10.3.5 window.history属性 290
10.3.6 window.frames属性 292
10.3.7 window.screen属性 293
10.3.8 window.open()/close()方法 294
10.3.9 window.moveTo()方法和window.resizeTo()方法 295
10.3.10 window.alert()、window.prompt()和window.confirm()方法 295
10.3.11 window.setTimeout()和window.setInterval()方法 297
10.3.12 window.document属性 299
10.4 DOM 299
10.4.1 Core DOM与HTML DOM 301
10.4.2 DOM节点的访问 303
10.4.3 DOM节点的修改 312
10.4.4 新建节点 315
10.4.5 移除节点 319
10.4.6 只适用于HTML的DOM对象 321
10.5 事件 324
10.5.1 内联HTML属性法 324
10.5.2 元素属性法 325
10.5.3 DOM的事件监听器 325
10.5.4 捕获法与冒泡法 327
10.5.5 阻断传播 328
10.5.6 防止默认行为 330
10.5.7 跨浏览器的事件监听器 330
10.5.8 事件类型 332
10.6 XMLHttpRequest对象 333
10.6.1 发送请求 334
10.6.2 处理响应 335
10.6.3 在早于IE 7的版本中创建XMLHttpRequest对象 336
10.6.4 A代表异步 337
10.6.5 X代表XML 338
10.6.6 示例 338
10.7 练习题 340
10.8 小结 342
第 11章 编程模式与设计模式 345
11.1 编程模式 346
11.1.1 行为隔离 346
11.1.2 命名空间 349
11.1.3 初始化时分支 352
11.1.4 惰性初始 353
11.1.5 配置对象 354
11.1.6 私有属性和方法 356
11.1.7 特权方法 357
11.1.8 私有函数的公有化 357
11.1.9 即时函数 358
11.1.10 模块 359
11.1.11 链式调用 360
11.1.12 JSON 361
11.1.13 高阶函数 363
11.2 设计模式 364
11.2.1 单例模式1 365
11.2.2 单例模式2 365
11.2.3 工厂模式 367
11.2.4 装饰器模式 369
11.2.5 装饰一棵圣诞树 370
11.3 观察者模式 371
11.4 小结 374
第 12章 测试与调试 375
12.1 单元测试 376
12.1.1 测试驱动开发 376
12.1.2 行为驱动测试 377
12.1.3 mocha、chai以及sinon 382
12.2 调试JavaScript 382
12.2.1 语法错误 382
12.2.2 运行时异常 383
12.3 小结 388
第 13章 响应式编程与React 390
13.1 响应式编程 390
13.2 React 393
13.3 虚拟DOM 393
13.4 React的安装及运行 394
13.4.1 组件与props 398
13.4.2 state 399
13.4.3 生命周期函数 401
13.5 小结 402
附录A 保留字 403
附录B 内建函数 407
附录C 内建对象 410
附录D 正则表达式 453
猜您喜欢