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 05 Javascript
javascript数据结构与算法之检索算法
Apr 04 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
Feb 15 Javascript
JavaScript中的闭包
Feb 24 Javascript
jQuery插件uploadify实现ajax效果的图片上传
Jun 18 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
Jun 22 Javascript
JavaScript 冒泡排序和选择排序的实现代码
Sep 03 Javascript
用js写的一个路由(简单实例)
Sep 24 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
在微信小程序里使用watch和computed的方法
Aug 02 Javascript
jQuery实现合并表格单元格中相同行操作示例
Jan 28 jQuery
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
一些相见恨晚的 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用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
php下Memcached入门实例解析
2015/01/05 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
javascript multibox 全选
2009/03/22 Javascript
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
input的focus方法使用
2010/03/13 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
js实现扫雷源代码
2020/11/27 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Django中使用group_by的方法
2015/05/26 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
文员个人的求职信范文
2013/09/26 职场文书
八年级音乐教学反思
2014/01/09 职场文书
大学生创业项目方案
2014/03/08 职场文书
美术课外活动总结
2014/07/08 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
2015年中秋节主持词
2015/07/30 职场文书
六一儿童节致辞
2015/07/31 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL