编写高质量JavaScript代码的68个有效方法
简介:
《Effective JavaScript:编写高质量JavaScript代码的68个有效方法》共分为7章,分别涵盖JavaScript的不同主题。第1章主要讲述最基本的主题,如版本、类型转换要点、运算符注意事项和分号局限等。第2章主要讲解变量作用域,介绍此方面的一些基本概念,以及一些最佳实践经验。第3章主要讲解函数的使用,深刻解析函数、方法和类,并教会读者在不同的环境下高效使用函数。第4章主要讲解原型和对象,分析JavaScript的继承机制以及原型和对象使用的最佳实践和原则。第5章主要介绍数组和字典,阐述将对象作为集合的用法以及使用数组和字典的一些陷阱。第6章介绍库和API,讲解如何设计良好的API的技巧,以清楚、简洁和明确地表达程序,并提高可重用率。第7章讲解并发,在技术上讨论一些“约定成俗”的JavaScript用法。
封面:
《编写高质量JavaScript代码的68个有效方法》
目录:
本书赞誉
译者序
序
前言
第1章 让自己习惯JavaScript
第1条:了解你使用的JavaScript版本
第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、getPrototype Of和__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模式清洁异步逻辑
电子书下载链接: http://pan.baidu.com/s/1eSNQvS2 提取密码: 请关注右下方二维码后回复资源名获取
编写高质量JavaScript代码的68个有效方法的更多相关文章
- JavaScript手札:《编写高质量JS代码的68个有效方法》(一)(1~5)
编写高质量JS代码的68个有效方法(一) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-botto ...
- 编写高质量JS代码的68个有效方法(六)
[20141213]编写高质量JS代码的68个有效方法(六) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(三)
[20141030]编写高质量JS代码的68个有效方法(三) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(八)
[20141227]编写高质量JS代码的68个有效方法(八) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(七)
[20141220]编写高质量JS代码的68个有效方法(七) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(四)
[20141129]编写高质量JS代码的68个有效方法(四) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(二)
[20141011]编写高质量JS代码的68个有效方法(二) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(十三)
No.61.不要阻塞I/O事件队列 Tips: 异步API使用回调函数来延缓处理代价高昂的操作以避免阻塞主应用程序 JavaScript并发的接收事件,但会使用一个事件队列按序地处理事件处理程序 在应 ...
- 编写高质量JS代码的68个有效方法(十一)
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
随机推荐
- python中list的sort方法
转:https://www.cnblogs.com/zle1992/p/6271105.html 使用python对列表(list)进行排序,说简单也简单,说复杂也复杂,我一开始学的时候也搞不懂在说什 ...
- 用注册表禁止windows添加新用户
运行 regedt32.exe 打开你的注册表,里面有一个目录树:打开其中目录 HKEY_LOCAL_MACHINE再打开其中目录 SAM再打开其中目录 SAM再打开其中目录 Domains再打开其中 ...
- Unity Shader 阶段性反思与总结(一)
Unity Shader 阶段性反思与总结(一) 最近在写Shader的时候,总是感觉力不从心,感觉自己已经看了蛮久的书了,也有一定的积累了,但是一想写什么效果,完完全全就是脑袋一团空白.典型的例子就 ...
- WPF之坑——ICommandSource与RoutedUICommand
最近在项目中自己写了一个控件A,继承自contentcontrol,实现了icommandsource接口.(因需求特殊并没有使用buttonbase及它的派生类为基类),控件A在测试程序中运转良好, ...
- cpu缓存java性能问题初探
在内存与cpu寄存器之间,还有一块区域叫做cpu高速缓存,即我们常常说的cache. cache分为L1.L2.L3三级缓存,速度递减,离cpu越来越远,L1.L2每个内核自己都有,L3是每个插槽上的 ...
- C++一些函数的意义
1.重载 : C++ 允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,这就是函数的重载 2.隐藏和覆盖的区别 IF 子类的函数与父类的名称相同,但是参数不同 父类函数被隐藏(还存在) ELS ...
- 【学习笔记】dsu on tree
我也不知道为啥这要起这名,完完全全没看到并查集的影子啊…… 实际上原理就是一个树上的启发式合并. 特点是可以在$O(nlogn)$的时间复杂度内完成对无修改的子树的统计,复杂度优于莫队算法. 局限性也 ...
- 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之三(配置文件读取)
干了一天的活,还有点时间,给兄弟们写点东西吧. 大家有没有发现一个问题?那就是在.Net Core的MVC项目里面,没有.config文件了!!!同志们,没有config文件了啊,这样搞,我以后要做些 ...
- 【bug】安卓浏览器键盘输入改变弹出层的定位
bug描述 在安卓浏览器中,有一个在页面底部的弹出层表单,样式如下: .popup { position: absolute; bottom: 0; } 当在这个弹出层输入内容,键盘自动弹出,弹出层的 ...
- Weblogic有免费的License了
分类: 系统运维 曾几何时, 为了找一个不限IP, 不限CPU, 不限时间的Weblogic License, 需要翻遍整个互联网, 这种日子一去不复返了~~~~~ 几个月前, 听到Oracle收购B ...