简介:

《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   提取密码: 请关注右下方二维码后回复资源名获取

最新文章

  1. sql中查询中的when...then 语句
  2. 使用代理和block写一个alertView
  3. ueditor 图片上传功能(.net)
  4. 用Join子句进行分组联接
  5. Mysql-linux下密码修改,忘记密码修改,超级管理用户修改
  6. HTTP Content-type
  7. WPF 一个数据库连接测试的实现
  8. 分享一个使用APICloud云数据库已上线的商城APP
  9. cocos2d-x 2.2 资源更新AssetsManager例子代码
  10. iOS10 权限崩溃问题-b
  11. 如何为你的初创应用App开发公司建立战略计划(商业战略竞争五力学)
  12. CAAnimation动画--(旋转/缩放/移动/闪烁)
  13. JS学习笔记Day22
  14. STL仿函数functor
  15. 中文 Tex
  16. java源码equals和hashCode
  17. SpringBoot开源项目Jeeplatform
  18. AndroidStudio替换空行
  19. TensorFlow入门
  20. MSVC and MinGW DLLs

热门文章

  1. Java反射reflection与注解annotation的应用(自动测试机)
  2. OC 数组以及字符串拼接与分割
  3. Hessian——轻量级远程调用方案
  4. python 神经网络包 NeuroLab
  5. 741. Cherry Pickup
  6. Manacher算法学习笔记
  7. git 拖下laravel 代码后报错 Warning: require(D:\WWW\laravel\bootstrap/../vendor/autoload.php
  8. Tomcat几种出错方法
  9. 解决chrome无法启用印象笔记-剪藏功能
  10. iOS 中长按手势回调会被触发过两次