当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript 命名空间以提高代码重用性

Javascript
IE6下如何让PNG图片变透明
jQuery教程:制作滑动动画效果的层
JS网页特效代码:切割网页图片特殊效果
正则表达式的高级技巧8个常用的概念
Javascript教程:获取当前地址栏url
百度前端笔试面试7个试题
互联网公司招聘web前端笔试题目
JS实例代码:点击复制地址发给QQ好友
JavaScript动态改变网页图片大小
jQuery实现搜索关键字自动匹配提示方法
JS实例代码解析:以实例方式学习数组知识
Mozilla:让JavaScript脚本直接操作本地文件
JS教程:给JavaScript文件传递参数
JS教程:如何制作表单自动聚焦的网页
通过JS正则表达式实现验证邮件的代码
JQuery教程:简化JQuery
jQuery教程:14个实用的jQuery技巧
JS实例:控制非法字符输入的JS代码
JavaScript实例:mini选择器实例代码详解
JQuery教程:获取网页表单值的方法

Javascript 中的 javascript 命名空间以提高代码重用性


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 225 ::
收藏到网摘: n/a

为你封装的javascript库加上命名空间以提高代码重用性 当在同一个网页里引入10多个js文件之后,
各js中的同名函数就很容易冲突了。
比如xxx库里写了个addCssStyle方法,
yyy类库里也写了个addCssStyle方法,
而这两个方法的具体实现又有一定差别。
那么同时引用这两个组件的时候,函数冲突之后导致页面效果发生变化,
调试和修改都是非常痛苦的,如果为了避免冲突,
而放弃引用一些优秀的组件,那更是让人郁闷的事情。
为此,在封装javascript组件库的时候,请使用命名空间来避免冲突。
将所有的方法和变量都要按包名类名的方式来写。
(这个时候写代码的感觉和封装java的util方法一样方便,呵呵)
由此,我的js库按如下方式封装。
google了半天,都没现成的,于是自己摸索出来,示例代码如下:
(lizongbo原创!!!)
<script language="JavaScript" type="text/javascript" >
<!-- //初始化命名空间
var jscom = jscom ? jscom : {};
jscom.lizongbo = jscom.lizongbo ? jscom.lizongbo : {};
//第一种封装方法
jscom.lizongbo.util = jscom.lizongbo.util ? jscom.lizongbo.util : {
crtVersion : 'jscom.lizongbo.util version 0.0.1', //注意用逗号隔开
sayHello: function (str){
window.alert('hello : '+str +' by ' + this.getVersion()); //变量引用要加上this
},//注意用逗号隔开
getVersion :function (){
//alert(' jscom.lizongbo.util version ' + this.crtVersion);//变量引用要加上this
return this.crtVersion+' lizongbo';
}//注意不能够有逗号
}
//第二种封装方法
jscom.lizongbo.util2 =function (){};//重点是这行,它保证了下面的with调用
jscom.lizongbo.util2.crtVersion=' jscom.lizongbo.util2 version 0.0.2';
jscom.lizongbo.util2.sayHello = function(str){
with (jscom.lizongbo.util2) {//这里也是重点,不然会找不到getVersion方法。
window.alert('你好 : '+str +' by ' + getVersion());//这种方法不用加this
}
};
jscom.lizongbo.util2.getVersion = function(){
with (jscom.lizongbo.util2) {//这里也是重点,不然会找不到crtVersion变量。
return crtVersion+' lizongbo2';
}
};
var vutil1= jscom.lizongbo.util; //和java的import差不多好用
vutil1.sayHello('lizongbo'); //第一种调用
var vutil2= jscom.lizongbo.util2;
vutil2.sayHello('lizongbo');//第二种调用
//-->
</script>
把上面的代码复制网页里看看效果吧。
对比两种实现方式,现有代码按第二种方式改造最为方便。
再把js文件按命名空间命名,那样操作就更加方便了。
例如
<script type="text/javascript" src="/commons/scripts/jscom.lizongbo.util1.js"></script>
<script type="text/javascript" src="/commons/scripts/jscom.lizongbo.util2.js"></script>
只要都按此方式编写的库,再也不用担心引入多个js文件之后的函数冲突问题了。