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 相关文章推荐
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
Aug 19 Javascript
jquery实现checkbox全选全不选的简单实例
Dec 31 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
Aug 26 Javascript
JavaScript实现网页加载进度条代码超简单
Sep 21 Javascript
javascript RegExp 使用说明
May 21 Javascript
smartupload实现文件上传时获取表单数据(推荐)
Dec 12 Javascript
js仿QQ邮箱收件人选择与搜索功能
Feb 10 Javascript
vue组件实践之可搜索下拉框功能
Nov 25 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
Apr 20 Javascript
了解JavaScript中let语句
May 30 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
Oct 17 Javascript
vue.js 子组件无法获取父组件store值的解决方式
Nov 08 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学习之PHP表达式
2006/10/09 PHP
ASP和PHP都是可以删除自身的
2007/04/09 PHP
php实现的在线人员函数库
2008/04/09 PHP
PHP 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
微信小程序实现按字母排列选择城市功能
2019/11/25 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python实现sublime3的less编译插件示例
2014/04/27 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
Python实现计算两个时间之间相差天数的方法
2017/05/10 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
python实现简单登陆系统
2018/10/18 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
WxPython实现无边框界面
2019/11/18 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
春节联欢会策划方案
2014/05/16 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL