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 广告后加载,加载完页面再加载广告
Nov 25 Javascript
利用jQuary实现文字浮动提示效果示例代码
Dec 26 Javascript
jQuery获取选中内容及设置元素属性的方法
Jul 09 Javascript
JavaScript获取各大浏览器信息图示
Nov 20 Javascript
Jquery遍历select option和添加移除option的实现方法
Aug 26 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
Nov 29 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
Apr 23 Javascript
JS倒计时实例_天时分秒
Aug 22 Javascript
详解webpack之scss和postcss-loader的配置
Jan 09 Javascript
JS实现点击按钮可实现编辑功能
Jul 03 Javascript
详解Vue源码中一些util函数
Apr 24 Javascript
js如何验证密码强度
Mar 18 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
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
jQuery实现折叠、展开的菜单组效果代码
2015/09/16 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
Python 列表list使用介绍
2014/11/30 Python
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
Python日志syslog使用原理详解
2020/02/18 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
python如何删除文件、目录
2020/06/23 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
告知书格式
2015/07/01 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
mysql如何能有效防止删库跑路
2021/10/05 MySQL
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL
Java设计模式之代理模式
2022/04/22 Java/Android