javascript之学会吝啬 精简代码


Posted in Javascript onApril 25, 2010

1、吝啬你的代码,用最少的代码做最合适的事情;

比如你的代码中用到了很多document.getElementById(),你是否考虑写一个简单的ID选择器

function $(Id) 
{ 
return document.getElementById(Id); 
}

2、吝啬你的补丁,不要为了实现功能在现有框架上打补丁,而是框架扩展上写实现,如果框架不能扩展,是否考虑部分重构?

比如你已经拥有一套完整的表单正则验证框架,某天你发现某个表单在严重框架里找不到对应的正则,你可能的做法是追加一个if就能简单的实现,可为何不在验证框架里面扩展一个正则,保持代码的干净呢?
、吝啬代码执行的步骤

比如我们在写ajax代码时,我们经常写如下的代码:

var xmlObject; 
function createXMLHTTPRequest() 
{ 
if(window.ActiveXObject) 
{  
xmlObject = new ActiveObject("Microsoft.XMLHTTP"); 
} 
else 
{ 
 
xmlObject = new XMLHTTPRequest(); 
} 
}

但我们每生成一次对象就要进行一次判断,为何不在第一次生成对象后记忆下来,下次直接new呢?改进后如下
var _ajax = function(){ 
_self = this; 
} 
_ajax.prototype = { 
/** 
* 构建http请求对象 
*/ 
_create: function(){ 
var factories = [ 
function(){return new XMLHttpRequest();}, //非IE系列 
function(){return new ActiveXObject("Microsoft.XMLHTTP");}, //IE 
function(){return new ActiveXObject("Msxml2.XMLHTTP");} //IE某些版本 
]; 
for (var i = 0; i < factories.length; i++) { 
try { 
if (factories[i]()) { 
return factories[i]; 
} 
} 
catch (e) { 
continue; 
} 
} 
return factory[2]; 
}(), 
}

这段代码看起来视乎比上面执行步骤多很多,但当第一次调用_ajax._create()后,_ajax._create已经被改变成一个兼容当前浏览器的匿名函数,以后的调用都不再会做判断;
Javascript 相关文章推荐
javascript设计模式 接口介绍
Jul 24 Javascript
js实现ArrayList功能附实例代码
Oct 29 Javascript
jQuery实现图片上传和裁剪插件Croppie
Nov 29 Javascript
jQuery中的each()详细介绍(推荐)
May 25 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
May 07 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
Jul 18 Javascript
详解如何在Vue里建立长按指令
Aug 20 Javascript
小程序实现五星点评效果
Nov 03 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
Nov 30 Javascript
JS中的算法与数据结构之列表(List)实例详解
Aug 16 Javascript
vue实现节点增删改功能
Sep 26 Javascript
使用preload预加载页面资源时注意事项
Feb 03 Javascript
一些相见恨晚的 JavaScript 技巧
Apr 25 #Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
Apr 25 #Javascript
js 禁用只读文本框获得焦点时的退格键
Apr 25 #Javascript
js 内存释放问题
Apr 25 #Javascript
JavaScript 对象链式操作测试代码
Apr 25 #Javascript
网页上的Javascript编辑器和代码格式化
Apr 25 #Javascript
jQuery温习篇 强大的JQuery选择器
Apr 24 #Javascript
You might like
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
php验证session无效的解决方法
2014/11/04 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
javascript 写的一个简单的timer
2009/07/30 Javascript
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
JavaScript通过RegExp实现客户端验证处理程序
2013/05/07 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python 字典(Dictionary)操作详解
2014/03/11 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
python中列表和元组的区别
2017/12/18 Python
python+opencv实现动态物体追踪
2018/01/09 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
蔻驰美国官网:COACH美国
2016/08/18 全球购物
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
机械系大学毕业生推荐信
2013/11/27 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
怎么写自荐书范文
2014/02/12 职场文书
军训教官感言
2014/03/02 职场文书
苏州园林导游词
2015/02/03 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
css3新特性的应用示例分析
2022/03/16 HTML / CSS
Java 关于String字符串原理上的问题
2022/04/07 Java/Android