24.1 可维护性 Maintainability
24.1.1 什么是可维护的代码 What Is Maintainable Code?
24.1.2 代码约定 Code Conventions 
24.1.3 松散耦合 Loose Coupling
24.1.4 编程实践 Programming Practices
24.2 性能 Performance
24.2.1 注意作用域 Be Scope-Aware
24.2.2 选择正确方法 Choose the Right Approach
24.2.3 最小化语句数 Minimize Statement Count
24.2.4 优化DOM 交互 Optimize Dom Interactions
24.3 部署 Deployment
24.3.1 构建过程 Build Process
24.3.2 验证 Validation
24.3.3 压缩 Compression

3. 解耦应用逻辑/事件处理程以下是要牢记的应用和业务逻辑之间松散耦合的几条原则:

 勿将event 对象传给其他方法;只传来自event 对象中所需的数据;
 任何可以在应用层面的动作都应该可以在不执行任何事件处理程序的情况下进行;
 任何事件处理程序都应该处理事件,然后将处理转交给应用逻辑。

3.避免与null 进行比较
如果看到了与null 比较的代码,尝试使用以下技术替换:
 如果值应为一个引用类型,使用instanceof 操作符检查其构造函数;  if (values instanceof Array)
 如果值应为一个基本类型,使用typeof 检查其类型;
 如果是希望对象包含某个特定的方法名,则使用typeof 操作符确保指定名字的方法存在于对
象上。

24.2.1 注意作用域
1.避免全局查找
var doc = document;
var imgs = doc.getElementsByTagName("img");
2. 避免with 语句

24.2.2 选择正确方法
1. 避免不必要的属性查找
使用变量和数组要比访问对象上的属性更有效率,后者是一个O(n)操作。

24.2.3 最小化语句数
//用4 个语句创建和初始化数组——浪费
var values = new Array();
values[0] = 123;
values[1] = 456;
values[2] = 789;

//只用一条语句创建和初始化数组
var values = [123, 456, 789];

24.2.4 优化DOM交互
var list = document.getElementById("myList"),
fragment = document.createDocumentFragment(),

for (i=0; i < 10; i++) {
item = document.createElement("li");
fragment.appendChild(item);
。。。
2. 使用 innerHTML

3. 使用事件代理
任何可以冒泡的事件都不仅仅可以在事件目标上进行处理,目标的任何祖先节点上也能处理。使用这个知识,就可以将事件处理程序附加到更高层的地方负责多个目标的事件处理。

4. 注意HTMLCollection
避免在循环体内多次调用HTMLCollection。
var images = document.getElementsByTagName("img"),
image,
i, len;
for (i=0, len=images.length; i < len; i++){
image = images[i];
//处理
}

24.3.3 压缩
1. 文件压缩
2. HTTP 压缩

《javascript高级程序设计》 第24章 最佳实践 Best Practices的更多相关文章

  1. 《JavaScript高级程序设计》——第二章在HTML使用JavaScript

    这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...

  2. JavaScript DOM高级程序设计1.2-循序最佳实践--我要坚持到底!

    我这人,最大的毛病就是浮躁. 下面开始我再一次的学习之旅,希望我能坚持到最后.记笔记除了分享以外,更重要的是让自己看见自己学习之路. 先把ADS库贴出来http://vdisk.weibo.com/s ...

  3. JavaScript高级程序设计第20章JSON 笔记 (学习笔记)

    第二十章 JSON 1.Json 可以表示三种类型的值: 1.简单值: 表示数值:5  表示字符串:“hello wrold”注表示字符串时必须使用双引号 2.对象: {“name”:“mi”,”ag ...

  4. JavaScript 高级程序设计 第5章引用类型 笔记

    第五章 引用类型 一.object类型 1.创建方法: 1.使用new 操作符创建 var person=new object() Person.name=”Nicholasa” Porson.age ...

  5. JavaScript高级程序设计第14章表单脚本 (学习笔记)

    第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...

  6. 《JAVASCRIPT高级程序设计》第一章

    在使用调制解调器的时代,频繁的表单验证对客户端来说是一个很大的负担,javascript,作为一种专门进行表单验证的客户端脚本语言诞生了.到今天,javascript早已超越了当初设定的角色.Java ...

  7. 《JavaScript 高级程序设计》第一章:简介

    JavaScript 历史 JavaScript的诞生的主要是当时的 netspace 公司谋求为自己的浏览器 Navigator 添加一种脚本语言,以便在本地客户端进行一些行为操作,而这一功能的需求 ...

  8. JavaScript中变量、作用域和内存问题(JavaScript高级程序设计第4章)

    一.变量 (1)ECMAScript变量肯能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,引用类型值指那些可能由多个值构成的对象. (2)基本数据类型是按值访问,可 ...

  9. 《JavaScript高级程序设计》——第一章JavaScript简介

    第一章主要讲了JavaScript的诞生和发展.刚刚接触JavaScript的我,似乎对这些内容并不感兴趣,快速看了一遍就开始去看第二章了. 看完第一章,收获也就是了解到JavaScript由ECMA ...

随机推荐

  1. js计时器的问题

    不说话直接上代码了 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> & ...

  2. vi及缩进设置

    set autoindent,把当前行的对起格式应用到下一行: set smartindent,智能的选择对起方式: set tabstop=4,设置tab键为4个空格: set shiftwidth ...

  3. ettercap

    作者: 官网:http://ettercap.github.io/ettercap/ 源码:https://github.com/Ettercap/ettercap 功能:arp欺骗

  4. CUBRID学习笔记 13 日志文件

    欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . 过错 CUBRID Broker Log Files  可以理解为数据库中间件日志 ...

  5. FJNU 1156 Fat Brother’s Gorehowl(胖哥的血吼)

    FJNU 1156 Fat Brother’s Gorehowl(胖哥的血吼) Time Limit: 1000MS   Memory Limit: 257792K [Description] [题目 ...

  6. clang: error: linker command failed with exit code 1 (use -v to see invocation)

    报错提示: ... ld: 6 duplicate symbols for architecture x86_64 clang: error: linker command failed with e ...

  7. 拓扑排序--UVa10305

    题目 Output: standard output Time Limit: 1 second Memory Limit: 32 MB John has n tasks to do. Unfortun ...

  8. 打开Domion 提示: 管理员ID过期

    今天打开Domion 提示 管理员ID过期,什么操作都做不了,如是在网上趴了下,发现以下方法好用: 管理员ID文件被设置为允许超期,同时又没有其他ID文件可以用于访问服务器.如果尝试用已经超期的管理员 ...

  9. DOM综合案例、SAX解析、StAX解析、DOM4J解析

    今日大纲 1.DOM技术对xml的增删操作 2.使用DOM技术完成联系人管理 3.SAX和StAX解析 4.DOM4J解析 5.XPATH介绍 1.DOM的增删操作 1.1.DOM的增加操作 /* * ...

  10. 使用BAPI_ACC_DOCUMENT_POST,创建会计凭证,用BADI扩展字段(转)

    业务需求:和银行做一个接口,要通过银行流水产生会计凭证,会计凭证的事务码是F-02,查到了BAPI方法BAPI_ACC_DOCUMENT_POST.昨天测试发现,有一些参数在BAPI_ACC_DOCU ...