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 相关文章推荐
input的focus方法使用
Mar 13 Javascript
超简单的jquery的AJAX用法
May 10 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
jQuery on()方法使用技巧详解
Apr 16 Javascript
使用javascript插入样式
Mar 14 Javascript
jquery attr()设置和获取属性值实例教程
Sep 25 Javascript
JavaScript中值类型和引用类型的区别
Feb 23 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
Jun 15 Javascript
Vue自定义指令详解
Jul 28 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
Feb 27 Javascript
解决Layui数据表格中checkbox位置不居中的方法
Aug 15 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
Nov 12 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
数据库的日期格式转换
2006/10/09 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
JS字符串截取函数实例
2013/12/27 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
Python生成随机数的方法
2014/01/14 Python
Python中Random和Math模块学习笔记
2015/05/18 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
python对html过滤处理的方法
2018/10/21 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
业务经理的岗位职责
2013/11/16 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
中学生运动会口号
2014/06/07 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
检讨书范文
2015/01/27 职场文书
党小组考察意见
2015/06/02 职场文书
我爱我班主题班会
2015/08/13 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android
POST提交数据常见的四种方式
2022/01/18 HTML / CSS