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小技巧 2.5 则
Sep 12 Javascript
JavaScript中的迭代器和生成器详解
Oct 29 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
Mar 01 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
Sep 02 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
Dec 20 Javascript
js设置文字颜色的方法示例
Dec 30 Javascript
浅谈Vue.js
Mar 02 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
详解js加减乘除精确计算
Mar 19 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
Feb 27 Javascript
vue使用video插件vue-video-player详解
Oct 23 Javascript
使用Vant完成Dialog弹框案例
Nov 11 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
PHP4实际应用经验篇(7)
2006/10/09 PHP
php 验证码制作(网树注释思想)
2009/07/20 PHP
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
详解详解Python中writelines()方法的使用
2015/05/25 Python
Python构建XML树结构的方法示例
2017/06/30 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
CSS3 旋转立方体问题详解
2020/01/09 HTML / CSS
亚历山大·王官网:Alexander Wang
2017/06/23 全球购物
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
大学自荐信
2013/12/12 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
奶茶店创业计划书
2014/08/14 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
2014年接待工作总结
2014/11/26 职场文书
小班上学期个人总结
2015/02/12 职场文书
爱护环境建议书
2015/09/14 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书