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 相关文章推荐
jquery ajax例子返回值详解
Sep 11 Javascript
window.requestAnimationFrame是什么意思,怎么用
Jan 13 Javascript
javascript动态创建表格及添加数据实例详解
May 13 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
Highcharts入门之基本属性
Aug 02 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
Nov 01 Javascript
微信小程序 开发经验整理
Feb 15 Javascript
jQuery插件之validation插件
Mar 29 jQuery
echarts同一页面中四个图表切换的js数据交互方法示例
Jul 03 Javascript
vue 实现axios拦截、页面跳转和token 验证
Jul 17 Javascript
基于Node.js搭建hexo博客过程详解
Jun 25 Javascript
jquery.pager.js实现分页效果
Jul 29 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
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
2020/09/24 Javascript
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
python如何使用代码运行助手
2020/07/03 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
中科前程Java笔试题
2016/11/20 面试题
军训 自我鉴定
2014/02/03 职场文书
音乐教学随笔感言
2014/02/19 职场文书
蓝颜请假条
2014/04/11 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
八月一日观后感
2015/06/10 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
python随机打印成绩排名表
2021/06/23 Python
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang
Python列表的索引与切片
2022/04/07 Python
MySQL 数据库范式化设计理论
2022/04/22 MySQL