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实现的一个倒计时的类
Mar 12 Javascript
JavaScript通过select动态更换图片的方法
Mar 23 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
Aug 24 Javascript
基于JavaScript实现一定时间后去执行一个函数
Dec 14 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
浅谈Javascript数据属性与访问器属性
Jul 26 Javascript
BootStrap tooltip提示框使用小结
Oct 26 Javascript
jquery拼接ajax 的json和字符串拼接的方法
Mar 11 Javascript
使用vue中的v-for遍历二维数组的方法
Mar 07 Javascript
JS实现li标签的删除
Apr 12 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
Javascript中window.name属性详解
Nov 19 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:风雨欲来 路在何方?
2006/10/09 PHP
一个PHP验证码类代码分享(已封装成类)
2011/07/17 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
2011/03/25 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
jQuery序列化表单成对象的简单实现
2016/11/29 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
Cpy和Python的效率对比
2015/03/20 Python
python中set()函数简介及实例解析
2018/01/09 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
python如何实现单链表的反转
2020/02/10 Python
营销主管自我评价怎么写
2013/09/19 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
后勤主管岗位职责
2014/03/01 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书