这本书中就像它前言中说的那样,这本书不是给初学者的。需要一定的基础,而且有一定的编码实践,才能很好的理解书里讲到的内容。学习一门编程语言,需要熟悉它的语法、形式和结构,这样才会编写合法的、符合语义的、具有意义和行为正确的程序。
此书的目的是加深理解如何有效地使用js构建更可预测的、可靠和可维护的js应用程序和库。所有章节都是围绕着这几块来展开的。
目录
第1章 让自己习惯JavaScript
- 第1条:了解你使用的js版本
- 第2条:理解JavaScript的浮点数
- 第3条:当心隐式的强制转换
- 第4条:原型类型优于封闭对象
- 第5条:避免对混合类型使用==运算符
- 第6条:了解分号插入的局限
- 第7条:视字符串为16位的代码单元序列
第2章 变量作用域
- 第8条:尽量少用全局对象
- 第9条:始终声明局部变量
- 第10条:避免使用with
- 第11条:熟练掌握闭包
- 第12条:理解变量声明提升
- 第13条:使用立即调用的函数表达式创建局部作用域
- 第14条:当心命名函数表达式笨拙的作用域
- 第15条:当心局部块函数声明笨拙的作用域
- 第16条:避免使用eval创建局部变量
- 第17条:间接调用eval函数优于直接调用
第3章 使用函数
- 第18条:理解函数调用、方法调用及构造函数调用之间的不同
- 第19条:熟练掌握高阶函数
- 第20条:使用call方法自定义接收者来调用方法
- 第21条:使用apply方法通过不同数量的参数调用函数
- 第22条:使用arguments创建可变参数的函数
- 第23条:永远不要修改arguments对象
- 第24条:使用变量保存arguments的引用
- 第25条:使用bind方法提取具有确定接收者的方法
- 第26条:使用bind方法实现函数柯里化
- 第27条:使用闭包而不是字符串来封闭代码
- 第28条:不要信赖函数对象的toString方法
- 第29条:避免使用非标准的栈检查属性
第4章 对象和原型
- 第30条:理解prototype、getPrototypeOf、和__proto__之间的不同
- 第31条:使用Object.getPrototypeOf函数而不要使用__proto__属性
- 第32条:始终不要修改__proto__属性
- 第33条:使构造函数与new操作符无关
- 第34条:在原型中存储方法
- 第35条:使用闭包存储私有数据
- 第36条:只将实例状态存储在实例对象中
- 第37条:认识到this变量的隐式绑定问题
- 第38条:在子类的构造函数中调用父类的构造函数
- 第39条:不要重用父类的属性名
- 第40条:避免继承标准类
- 第41条:将原型视为实现细节
- 第42条:避免使用轻率的猴子补丁
第5章 数组和字典
- 第43条:使用Object的直接实例构造轻量级的字典
- 第44条:使用null原型以防止原型污染
- 第45条:使用hasOwnProperty方法以避免原型污染
- 第46条:使用数组而不要使用字典来存储有序集合
- 第47条:绝不要在Object.prototype中增加可枚举的属性
- 第48条:避免在枚举期间修改对象
- 第49条:数组迭代要优先使用for循环而不是for...in循环
- 第50条:迭代方法优于循环
- 第51条:在类数组对象上复用通用的数组方法
- 第52条:数组字面量优于数组构造函数
第6章 库和API设计
- 第53条:保持一致的约定
- 第54条:将undefined看做“没有值”
- 第55条:接收关键字参数的选项对象
- 第56条:避免不必要的状态
- 第57条:使用结构类型设计灵活的接口
- 第58条:区分数组对象和类数组对象
- 第59条:避免过度的强制转换
- 第60条:支持方法链
第7章 并发
- 第61条:不要阻塞I/O事件队列
- 第62条:在异步序列中使用嵌套或命名的回调函数
- 第63条:当心丢弃错误
- 第64条:对异步循环使用递归
- 第65条:不要在计算时阻塞事件队列
- 第66条:使用计数器来执行并行操作
- 第67条:绝不要同步地调用异步的回调函数
- 第68条:使用promise模式清洁异步逻辑
核心语言相关
数据类型
数据类型及转换.png
函数
函数及其作用域.png
对象和原型
时间: 2024-08-24 14:31:29