失效链接处理 |
深入理解ES6 PDF 下载
本站整理下载:
版权归出版社和原作者所有,链接已删除,请购买正版
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
http://product.dangdang.com/25098207.html
相关截图:
资料简介: ES6是ECMAScript标准十余年来变动大的一个版本,其中添加了许多新的语法特性,既有大家耳熟能详的Promise,也有闻所未闻的Proxy代理和Reflection反射;既有可以通过转译器(Transpiler)等方式在旧版本浏览器中实现兼容的let、const、不定参数、展开运算符等功能,亦有无论如何都无法实现向前兼容的尾调用优化。深入理解ES6的特性对于所有JavaScript开发者而言至关重要,在可预见的未来,ES6中引入的语言特性会成为JavaScript应用程序的主流特性,这也是《深入理解ES6》的初衷。希望你通过阅读《深入理解ES6》可以了解ES6的新特性,并在需要时能够随时使用。 资料目录: 第1章 块级作用域绑定 1 var声明及变量提升(Hoisting)机制 1 块级声明 3 -- let声明 3 -- 禁止重声明 4 -- const声明 4 -- 临时死区(Temporal Dead Zone) 6 循环中的块作用域绑定 7 -- 循环中的函数 8 -- 循环中的let声明 9 -- 循环中的const声明 10 全局块作用域绑定 12 块级绑定最佳实践的进化 13 小结 13 第2章 字符串和正则表达式 14 更好的Unicode支持 14 -- UTF-16码位 15 -- codePointAt()方法 16 -- String.fromCodePoint()方法 17 -- normalize()方法 17 -- 正则表达式u修饰符 19 其他字符串变更 21 -- 字符串中的子串识别 21 -- repeat()方法 22 其他正则表达式语法变更 23 -- 正则表达式y修饰符 23 -- 正则表达式的复制 26 -- flags属性 27 模板字面量 28 -- 基础语法 28 -- 多行字符串 29 -- 字符串占位符 31 -- 标签模板 32 小结 36 第3章 函数 37 函数形参的默认值 37 -- 在ECMAScript 5中模拟默认参数 38 -- ECMAScript 6中的默认参数值 38 -- 默认参数值对arguments对象的影响 40 -- 默认参数表达式 42 -- 默认参数的临时死区 44 处理无命名参数 46 -- ECMAScript 5中的无命名参数 46 -- 不定参数 47 增强的Function构造函数 49 展开运算符 50 name属性 52 -- 如何选择合适的名称 52 -- name属性的特殊情况 52 明确函数的多重用途 54 -- 在ECMAScript 5中判断函数被调用的方法 54 -- 元属性(Metaproperty)new.target 55 块级函数 57 -- 块级函数的使用场景 58 -- 非严格模式下的块级函数 58 箭头函数 59 -- 箭头函数语法 60 -- 创建立即执行函数表达式 62 -- 箭头函数没有this绑定 63 -- 箭头函数和数组 65 -- 箭头函数没有arguments绑定 66 -- 箭头函数的辨识方法 66 尾调用优化 67 -- ECMAScript 6中的尾调用优化 68 -- 如何利用尾调用优化 69 小结 71 第4章 扩展对象的功能性 72 对象类别 72 对象字面量语法扩展 73 -- 属性初始值的简写 73 -- 对象方法的简写语法 74 -- 可计算属性名(Computed Property Name) 75 新增方法 76 -- Object.is()方法 76 -- Object.assign()方法 77 重复的对象字面量属性 80 自有属性枚举顺序 81 增强对象原型 82 -- 改变对象的原型 82 -- 简化原型访问的Super引用 83 正式的方法定义 86 小结 88 第5章 解构:使数据访问更便捷 89 为何使用解构功能 89 对象解构 90 -- 解构赋值 91 -- 默认值 92 -- 为非同名局部变量赋值 93 -- 嵌套对象解构 94 数组解构 96 -- 解构赋值 97 -- 默认值 99 -- 嵌套数组解构 99 -- 不定元素 99 混合解构 101 解构参数 102 -- 必须传值的解构参数 103 -- 解构参数的默认值 104 小结 106 第6章 Symbol和Symbol属性 107 创建Symbol 107 Symbol的使用方法 109 Symbol共享体系 110 Symbol与类型强制转换 112 Symbol属性检索 112 通过well-known Symbol暴露内部操作 113 -- Symbol.hasInstance方法 114 -- Symbol.isConcatSpreadable属性 116 -- Symbol.match、Symbol.replace、Symbol.search和Symbol.split属性 118 -- Symbol.toPrimitive方法 120 -- Symbol.toStringTag属性 122 -- Symbol.unscopables属性 125 小结 127 第7章 Set集合与Map集合 128 ECMAScript 5中的Set集合与Map集合 129 该解决方案的一些问题 129 ECMAScript 6中的Set集合 131 -- 创建Set集合并添加元素 131 -- 移除元素 133 -- Set集合的forEach()方法 133 -- 将Set集合转换为数组 136 -- Weak Set集合 136 ECMAScript 6中的Map集合 139 -- Map集合支持的方法 140 -- Map集合的初始化方法 141 -- Map集合的forEach()方法 142 -- Weak Map集合 143 小结 147 第8章 迭代器(Iterator)和生成器(Generator) 149 循环语句的问题 149 什么是迭代器 150 什么是生成器 151 -- 生成器函数表达式 153 -- 生成器对象的方法 154 可迭代对象和for-of循环 155 -- 访问默认迭代器 156 -- 创建可迭代对象 157 内建迭代器 158 -- 集合对象迭代器 158 -- 字符串迭代器 163 -- NodeList迭代器 164 展开运算符与非数组可迭代对象 165 高级迭代器功能 166 -- 给迭代器传递参数 166 -- 在迭代器中抛出错误 168 -- 生成器返回语句 170 -- 委托生成器 171 异步任务执行 174 -- 简单任务执行器 174 -- 向任务执行器传递数据 176 -- 异步任务执行器 177 小结 180 第9章 JavaScript中的类 181 ECMAScript 5中的近类结构 181 类的声明 182 -- 基本的类声明语法 182 -- 为何使用类语法 184 类表达式 186 -- 基本的类表达式语法 186 -- 命名类表达式 187 作为一等公民的类 189 访问器属性 190 可计算成员名称 192 生成器方法 193 静态成员 195 继承与派生类 196 -- 类方法遮蔽 199 -- 静态成员继承 199 -- 派生自表达式的类 200 -- 内建对象的继承 203 -- Symbol.species属性 205 在类的构造函数中使用new.target 208 小结 210 第10章 改进的数组功能 211 创建数组 211 -- Array.of()方法 212 -- Array.from()方法 213 为所有数组添加的新方法 216 -- find()方法和findIndex()方法 217 -- fill()方法 217 -- copyWithin()方法 218 定型数组 219 -- 数值数据类型 220 -- 数组缓冲区 221 -- 通过视图操作数组缓冲区 221 定型数组与普通数组的相似之处 228 -- 通用方法 229 -- 相同的迭代器 230 -- of()方法和from()方法 230 定型数组与普通数组的差别 231 -- 行为差异 231 -- 缺失的方法 232 -- 附加方法 233 小结 234 第11章 Promise与异步编程 235 异步编程的背景知识 235 -- 事件模型 236 -- 回调模式 236 Promise的基础知识 239 -- Promise的生命周期 239 -- 创建未完成的Promise 242 -- 创建已处理的Promise 244 -- 执行器错误 247 全局的Promise拒绝处理 248 Node.js环境的拒绝处理 248 浏览器环境的拒绝处理 251 串联Promise 253 -- 捕获错误 254 -- Promise链的返回值 255 -- 在Promise链中返回Promise 256 响应多个Promise 259 -- Promise.all()方法 259 -- Promise.race()方法 260 自Promise继承 262 基于Promise的异步任务执行 263 小结 267 第12章 代理(Proxy)和反射(Reflection)API 269 数组问题 269 代理和反射 270 创建一个简单的代理 271 使用set陷阱验证属性 272 用get陷阱验证对象结构(Object Shape) 274 使用has陷阱隐藏已有属性 275 用deleteProperty陷阱防止删除属性 277 原型代理陷阱 279 -- 原型代理陷阱的运行机制 279 -- 为什么有两组方法 281 对象可扩展性陷阱 282 -- 两个基础示例 283 -- 重复的可扩展性方法 284 属性描述符陷阱 285 -- 给Object.defineProperty()添加限制 286 -- 描述符对象限制 287 -- 重复的描述符方法 288 ownKeys陷阱 290 函数代理中的apply和construct陷阱 291 -- 验证函数参数 292 -- 不用new调用构造函数 294 -- 覆写抽象基类构造函数 296 -- 可调用的类构造函数 297 可撤销代理 298 解决数组问题 299 -- 检测数组索引 300 -- 添加新元素时增加length的值 300 -- 减少length的值来删除元素 302 -- 实现MyArray类 304 将代理用作原型 307 -- 在原型上使用get陷阱 307 -- 在原型上使用set陷阱 308 -- 在原型上使用has陷阱 309 -- 将代理用作类的原型 310 小结 314 第13章 用模块封装代码 315 什么是模块 315 导出的基本语法 316 导入的基本语法 317 -- 导入单个绑定 318 -- 导入多个绑定 318 -- 导入整个模块 318 -- 导入绑定的一个微妙怪异之处 320 导出和导入时重命名 320 模块的默认值 321 -- 导出默认值 321 -- 导入默认值 322 重新导出一个绑定 323 无绑定导入 324 加载模块 325 -- 在Web浏览器中使用模块 325 -- 浏览器模块说明符解析 329 小结 330 附录A ECMAScript 6中较小的改动 331 附录B 了解ECMAScript 7(2016) 337 索引 343 |