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的事件描述
Sep 08 Javascript
JavaScript类和继承 prototype属性
Sep 03 Javascript
重载toString实现JS HashMap分析
Mar 13 Javascript
在javascript中关于节点内容加强
Apr 11 Javascript
js仿苹果iwatch外观的计时器代码分享
Aug 26 Javascript
浅谈JavaScript 覆盖原型以及更改原型
Aug 31 Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
Jan 03 Javascript
使用Math.max,Math.min获取数组中的最值实例
Apr 25 Javascript
[js高手之路]寄生组合式继承的优势详解
Aug 28 Javascript
three.js加载obj模型的实例代码
Nov 10 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
May 29 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 归并排序 数组交集
2011/05/10 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
javascript常用方法总结
2015/05/14 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
2016/09/19 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
python字符类型的一些方法小结
2016/05/16 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Python3中exp()函数用法分析
2019/02/19 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
python tkinter实现连连看游戏
2020/11/16 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
如何进行Linux分区优化
2013/02/12 面试题
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
教师节主题班会教案
2015/08/17 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
导游词之张家界
2019/10/31 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android