使用Object的直接量实例构造轻量级的字典:

  • 使用for/in循环,使用对象字面量来构建,并确保不增加Object.prototype属性来导致for/in循环;(考虑到兼容性,如Array.prototype是允许增加属性的);
  • 如果确实需要在Object.prototype中增加属性那么使用Object.defineProperty
    Object.defineProperty(Object.prototype, 'allkeys', {
    value : function () {
    var reuslt = [];
    for(var key in this) {
    result.push(key);
    }
    reutrn result;
    },
    writable: true;
    enumberable: false;
    configurable: true;
    })

防止原型污染:

  • 使用null,Object.create:  var a = Object.create(null);

使用hasOwnProperty方法避免原型污染:

  • 考虑到要检测的对象的hasOwnProperty可能被污染:

    var hasOwn = {}.hasOwnProperty;
    hasOwn.call(obj,'proto');
    ------------------------------------------
    function Dict(elems) {
    this.elems = elems || {};
    }
    Dict.prototype.has = function(key) {
    return {}.hasOwnPrototype.call(this.elems, key);
    }
    Dict.prototype.set = function(key, val) {
    this.elems[key] = val;
    }
    Dict.prototype.remove = function (key) {
    delete this.elems[key];
    }

使用数组而不是字典类存储有序集合:

  • 使用for/in循环来枚举对象属性应当与顺序无关;
  • 如果聚集运算字典中的数据,确保聚集操作与顺序无关;

避免在枚举期间修改对象:

  • 如果被枚举的对象在枚举期间添加了新的属性,则不能保证for/in循环的行为是可预见的;
  • 当迭代对象时,使用while或者for替代while;

使用迭代方法:

  • 可以使用迭代方法代替for循环增加可读性;
  • 在需要提前终止循环的情况下,仍然使用传统循环;
  • 早类数组对象上复用通用的数组方法;[].forEach.call();

javascript优化--03高质量编码的更多相关文章

  1. javascript优化--01高质量编码

    javascript的浮点数: Javascript的数字都是双精度浮点数: 64位编码数字: 能表达53位精度的整数: 进行位运算时会隐式地转化为32位整数(0,1序列)后计算: 浮点数运算可能会有 ...

  2. javascript优化--04高质量编码

    库和API的设计: 在参数设计中保持好的习惯:如顺序,width,height;top,right,bottom,left;如命名: 将undefined看作没有值而不要表示非特定的值: 在允许0,空 ...

  3. javascript优化--02高质量编码

    方法调用: 通常某个对象调用方法查找该方法并将该对象作为该方法的接受者(this): 使用call自定义接受者 可以调用在给定对象中不存在的方法: 定义高阶函数,允许使用者给回调函数指定接受者: 使用 ...

  4. (第一章)改善JavaScript,编写高质量代码。

    根据<编写高质量代码改善JavaScript程序的188个建议>这本书,来记录我目前所了解的建议方式. 建议1:警惕Unicode乱码 根据ECMA标准规定JavaScript语言可以使用 ...

  5. (第二章)改善JavaScript,编写高质量代码。

    建议34:字符串是非值操作 var a = "javascript"; var b = a; b = b.toUpperCase(); alert(a); //javascript ...

  6. 编写高质量JavaScript代码的68个有效方法

    简介: <Effective JavaScript:编写高质量JavaScript代码的68个有效方法>共分为7章,分别涵盖JavaScript的不同主题.第1章主要讲述最基本的主题,如版 ...

  7. 深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点

    深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 2011-12-28 23:00 by 汤姆大叔, 139489 阅读, 119 评论, 收藏, 编辑 才华横溢的 ...

  8. 高质量JavaScript代码书写基本要点

    翻译-高质量JavaScript代码书写基本要点 by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/ ...

  9. [转] 翻译-高质量JavaScript代码书写基本要点 ---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1173 原文作者:St ...

随机推荐

  1. TCPIP三次握手详情

    TCP正常建立和关闭的状态变化 TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做 四次握手. 建立连接 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第 ...

  2. Java之内存分析和String对象

    原文地址:http://www.cnblogs.com/devinzhang/archive/2012/01/25/2329463.html 文中 s2后面的注释是错误的,应该是”创建一个对象(堆中) ...

  3. [Effective JavaScript 笔记]第52条:数组字面量优于数组构造函数

    js的优雅很大程序要归功于程序中常见的构造块(Object,Function及Array)的简明的字面量语法.字面量是一种表示数组的优雅方法. var a=[1,2,3,5,7,8]; 也可以使用构造 ...

  4. 教程Xcode 4下编译发布与提交App到AppStore

    地址:http://www.cocoachina.com/bbs/simple/?t55825.html 教程Xcode 4下编译发布与提交App到AppStore 先说一下这个是我在网上看到的一个帖 ...

  5. jsp&servlet学习笔记

    1.路径引用问题 一个css.jsp.html.或者javascript文件从从一个工程复制到另一工程,如果引用的时候使用的时相对路径,看似没有错误,但是却一直引用不进来,这时候要使用绝对路径,这样才 ...

  6. bitbucket新建分支

    /workspace/ott_app_store:fetch-xml$ git branch edit_package_page /workspace/ott_app_store:fetch-xml$ ...

  7. (转)WPF控件开源资源

    (转)WPF控件开源资源 Textbox Drag/Drop in WPFhttp://www.codeproject.com/Articles/42696/Textbox-Drag-Drop-in- ...

  8. GDB 使用大法

    一.GDB 我用的是 GCC+POWERSHELL+GDB,  GDB刚刚接触也有很多要记的. 二.一个调试示例 tst.c #include <stdio.h> int func(int ...

  9. lz4,pigz,gzip 3者比较

    一.压缩(1.1)使用gzip进行打包:# time tar -zcf tar1.tar binlog*real 0m48.497suser 0m38.371ssys 0m2.571s (1.2)使用 ...

  10. Linux 之 最常用的20条命令

    玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了.当然你也可以在使用时去找一下 ...