你不知道的JavaScript(上卷)
Kyle Simpson
赵望野, 梁杰 译
出版时间:2015年03月
页数:208
“Kyle对JavaScript语言每一个细节的缜密思考方式,
会潜移默化地移植到我们的头脑和日常工作流程当中。”
——Shane Hudson,自由前端开发者
“原型使JavaScript语言功能强大,但也令开发人员备感困惑。
本书第二部分‘this和对象原型’精妙地解释了原型、
继承和JavaScript中‘类’的概念。”
——David Walsh,Mozilla前端工程师

JavaScript语言有很多复杂的概念,但却用简单的方式体现出来(比如回调函数),因此,开发者无需理解语言内部的原理,就能编写出功能全面的程序;就像收音机一样,你无需理解里面的管子和线圈都是做什么用的,只要会操作收音机上的按键,就可以收听你喜欢的节目。然而,JavaScript的这些复杂精妙的概念才是语言的精髓,即使是经验丰富的JavaScript开发者,如果没有认真学习也无法真正理解语言本身的特性。正是因为绝大多数人不求甚解,一遇到出乎意料的行为就认为是语言本身有缺陷,进而把相关的特性加入黑名单,久而久之就排除了这门语言的多样性,人为地使它变得不完整、不安全。
“你不知道的JavaScript”系列就是要让不求甚解的JavaScript开发者迎难而上,深入语言内部,弄清楚JavaScript每一个零部件的用途。本书介绍了该系列的两个主题:“作用域和闭包”以及“this和对象原型”。掌握了这些知识之后,无论什么技术、框架和流行词语,你都能轻松理解。
  1. 前言
  2. 第一部分 作用域和闭包
  3. 序  
  4. 第1章 作用域是什么  
  5. 1.1 编译原理  
  6. 1.2 理解作用域  
  7. 1.2.1 演员表  
  8. 1.2.2 对话  
  9. 1.2.3 编译器有话说  
  10. 1.2.4 引擎和作用域的对话  
  11. 1.2.5 小测验
  12. 1.3 作用域嵌套
  13. 1.4 异常
  14. 1.5 小结
  15. 第2章 词法作用域
  16. 2.1 词法阶段
  17. 2.2 欺骗词法
  18. 2.2.1 eval 
  19. 2.2.2 with  
  20. 2.2.3 性能
  21. 2.3 小结
  22. 第3章 函数作用域和块作用域
  23. 3.1 函数中的作用域
  24. 3.2 隐藏内部实现
  25. 3.3 函数作用域
  26. 3.3.1 匿名和具名
  27. 3.3.2 立即执行函数表达式
  28. 3.4 块作用域
  29. 3.4.1 with  
  30. 3.4.2 try/catch 
  31. 3.4.3 let  
  32. 3.4.4 const 
  33. 3.5 小结
  34. 第4章 提升
  35. 4.1 先有鸡还是先有蛋
  36. 4.2 编译器再度来袭
  37. 4.3 函数优先
  38. 4.4 小结
  39. 第5章 作用域闭包
  40. 5.1 启示
  41. 5.2 实质问题
  42. 5.3 现在我懂了
  43. 5.4 循环和闭包
  44. 5.5 模块
  45. 5.5.1 现代的模块机制
  46. 5.5.2 未来的模块机制
  47. 5.6 小结
  48. 附录A 动态作用域
  49. 附录B 块作用域的替代方案
  50. 附录C this词法
  51. 附录D 致谢
  52. 第二部分 this和对象原型
  53. 序  72
  54. 第1章 关于this 
  55. 1.1 为什么要用this  
  56. 1.2 误解
  57. 1.2.1 指向自身
  58. 1.2.2 它的作用域
  59. 1.3 this到底是什么
  60. 1.4 小结
  61. 第2章 this全面解析
  62. 2.1 调用位置
  63. 2.2 
  64. 2.2.1 默认绑定
  65. 2.2.2 隐式绑定
  66. 2.2.3 显式绑定
  67. 2.2.4 new绑定
  68. 2.3 优先级
  69. 2.4 绑定例外
  70. 2.4.1 被忽略的this 
  71. 2.4.2 间接引用
  72. 2.4.3 软绑定
  73. 2.5 this词法
  74. 2.6 小结
  75. 第3章 对象
  76. 3.1 语法
  77. 3.2 类型
  78. 3.3 内容
  79. 3.3.1 可计算属性名
  80. 3.3.2 属性与方法
  81. 3.3.3 数组
  82. 3.3.4 复制对象
  83. 3.3.5 属性描述符
  84. 3.3.6 不变性
  85. 3.3.7 [[Get]]
  86. 3.3.8 [[Put]]
  87. 3.3.9 Getter和Setter  
  88. 3.3.10 存在性
  89. 3.4 遍历
  90. 3.5 小结
  91. 第4章 混合对象“类”
  92. 4.1 类理论
  93. 4.1.1 “类”设计模式
  94. 4.1.2 JavaScript中的“类”
  95. 4.2 类的机制
  96. 4.2.1 建造
  97. 4.2.2 构造函数
  98. 4.3 类的继承
  99. 4.3.1 多态
  100. 4.3.2 多重继承
  101. 4.4 混入
  102. 4.4.1 显式混入
  103. 4.4.2 隐式混入
  104. 4.5 小结
  105. 第5章 原型
  106. 5.1 [[Prototype]]
  107. 5.1.1 Object.prototype 
  108. 5.1.2 属性设置和屏蔽
  109. 5.2 “类”
  110. 5.2.1 “类”函数
  111. 5.2.2 “构造函数”  
  112. 5.2.3 技术
  113. 5.3 (原型)继承
  114. 5.4 对象关联
  115. 5.4.1 创建关联
  116. 5.4.2 关联关系是备用
  117. 5.5 小结
  118. 第6章 行为委托
  119. 6.1 面向委托的设计
  120. 6.1.1 类理论
  121. 6.1.2 委托理论
  122. 6.1.3 比较思维模型
  123. 6.2 类与对象
  124. 6.2.1 控件“类”
  125. 6.2.2 委托控件对象
  126. 6.3 更简洁的设计
  127. 6.4 更好的语法
  128. 6.5 内省
  129. 6.6 小结
  130. 附录A ES6中的Class  
书名:你不知道的JavaScript(上卷)
作者:Kyle Simpson
译者:赵望野, 梁杰 译
国内出版社:人民邮电出版社
出版时间:2015年03月
页数:208
书号:978-7-115-38573-4
原版书书名:You Don't Know JS: Scope & Closures
原版书出版商:O'Reilly Media
Kyle Simpson
 
Kyle Simpson是来自得克萨斯州Austin的一位UI架构师。他热爱用户体验,特别热衷于如何将UI优化为尽可能响应式的、高效能的、安全的和可扩展的。他认为JavaScript是终极语言,并且一贯地致力于如何推进该语言。如果有什么事情是用JavaScript或Web技术无法做到的,他会为此苦恼。他拥有众多的开源项目,包括LABjs、HandlebarJS/BikechainJS和flXHR,并且他还是SWFObject核心贡献者。