你的位置:首页 > Java教程

[Java教程][Effective JavaScript 笔记]全书总结


这本书中就像它前言中说的那样,这本书不是给初学者的。需要一定的基础,而且有一定的编码实践,才能很好的理解书里讲到的内容。
学习一门编程语言,需要熟悉它的语法、形式和结构,这样才会编写合法的、符合语义的、具有意义和行为正确的程序。
此书的目的是加深理解如何有效地使用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

对象和原型

对象和原型

实用方法

  • 有序数据,使用数组存储

  • 无序数据,使用字典存储

  • 使用结构化数据做为参数

  • 使用惯用的命名方法

  • 使用语法糖(链式调用)减少中间状态存储

  • promise模式处理异步调用