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 相关文章推荐
js实现ASP分页函数 HTML分页函数
Sep 22 Javascript
js综合应用实例简单的表格统计
Sep 03 Javascript
让人蛋疼的JavaScript语法特性
Sep 30 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
Aug 21 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
May 28 Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 Javascript
JavaScript结合HTML DOM实现联动菜单
Apr 05 Javascript
two.js之实现动画效果示例
Nov 06 Javascript
基于Bootstrap表单验证功能
Nov 17 Javascript
Bootstrap实现的表格合并单元格示例
Feb 06 Javascript
微信小程序实现下滑到底部自动翻页功能
Mar 07 Javascript
一文了解JavaScript用Element Traversal新属性遍历子元素
Nov 27 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
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
2017/05/05 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
javascript demo 基本技巧
2009/12/18 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
分享一个常用的Python模拟登陆类
2015/03/29 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
Python中关于使用模块的基础知识
2015/05/24 Python
python去除文件中重复的行实例
2018/06/29 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
pymongo中group by的操作方法教程
2019/03/22 Python
python实现弹跳小球
2019/05/13 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
在职研究生自我鉴定
2013/10/16 职场文书
高二英语教学反思
2014/01/19 职场文书
党支部特色活动方案
2014/08/20 职场文书
业务员岗位职责
2015/02/03 职场文书
博士论文答辩开场白
2015/06/01 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书