JavaScript模式【O'Reilly出版】·附网盘链接

JavaScript模式【O'Reilly出版】·附网盘链接

模式:指一个通用问题的解决方案。一个模式不仅仅是一个可以用来复制粘贴的代码解决方案,更多地是提供了一个更好的实践经验、有用的抽象化表示和解决一类问题的模板。

目录

PDF地址

基本技巧

编写可维护的代码

易维护的代码意味着代码具有如下特性:

  • 阅读性好
  • 具有一致性
  • 预见性好
  • 看起来如同一个人编写
  • 有文档
  • 尽量少用全局变量

变量释放时的副作用

  • 全局变量不能通过delete删除,而对象的属性可以

编码时的建议

  • 单一的var模式:在函数内部,将变量的定义放在函数头部,便于维护,提高代码要读性。
  • 对for循环的建议
    1. 逐步减至0,这样通常更快,因为同0比较比同数组的长度比较,或者同非0数组比较更有效率。
    2. 实践证明,while循环速度更快
1
2
3
var i,arr=[];
// 改进:使用while循环
while(i--){//xxx}
  • 对for…in循环的建议for...in又称为枚举,用于处理对象。在遍历对象属性来过滤遇到原型链的属性时,可通过obj.hasOwnProperty|Object.property.hasOwnProperty.call(xxx)来检测key是否为对象本身属性。
  • 不要增加内置的原型
  • 避免使用隐式类型转换:为避免隐式类型转换导致的混乱,在使用比较廒时,应该使用===!===来对数值和类型进行比较
  • 避免使用eval()
  • parseInt()数值约定:在使用parseInt时,最好不要忽略第二个参数(进制),因为带val第一位是0时,其会被当做一个八进制数进行处理【例如处理09这种月份日期时】,最佳实践:parseInt(num,10)
  • 空格的使用
    1. 在for循环的各个部分的分号后,建议添加空格,for(var i=0, max=4; i<max; i++){}
    2. 在限定数组项的逗号后面: var a = [ 1, 2, 3]
    3. 分隔开函数中各个参数的逗号之后 : myFun = function(a, b, c)
    4. 在函数声明的大括号之前 : function myFun() {}
    5. 在匿名函数表达式之后 : var myFun = function () {}

命名约定

  1. 构造函数的首字母大写
  2. 针对多个单词组成的变量名,推荐使用驼峰式命名法下划线连接
  3. 常量命名通常使用全大写的方式
  4. 私有变量命名通常给变量名加下划线前缀var _private = 1

编写API文档

  • API文档可以从代码的注释中自动生成。
  • 在JS中,推荐两个开源工具可用于编写JS文档,分别是JSDoc ToolkitYUIDoc
  • 生成API文档的步骤如下:

    1. 编写特殊格式的代码块
    2. 运行工具来解析代码和注释
    3. 发布工具解析的结果,大多数情况是采用HTML格式发布

      示例:有一个名为reverse()的函数,可以将字符串翻转过来,该函数有一个字符串参数,并返回另一个字符串

      1
      2
      3
      4
      5
      6
      7
      /**
      * 翻转一个字符串
      *
      * @param {String} 输入需要翻转的字符串
      * @return {String} 翻转后的字符串
      */
      var reverse = function (input) {return output;}
  • 在正式发布时,精简代码

字面量和构造函数

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×