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

 更新时间:2008年11月13日 00:13:45   作者:  
为你封装的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文件之后的函数冲突问题了。

相关文章

  • Javascript小技巧之生成html元素

    Javascript小技巧之生成html元素

    Javascript 生成 HTML元素的方法在本文中介绍2种,第一种是比较正规的创建元素方法,第二种是利用javascript中的write()方法直接写出html元素。
    2014-05-05
  • 原生js实现弹窗消息动画

    原生js实现弹窗消息动画

    这篇文章主要为大家详细介绍了原生js实现弹窗消息动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • layer.open 按钮的点击事件关闭方法

    layer.open 按钮的点击事件关闭方法

    今天小编就为大家分享一篇layer.open 按钮的点击事件关闭方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • JavaScript 格式化金额常见方法

    JavaScript 格式化金额常见方法

    这篇文章主要介绍了JavaScript 格式化金额最常见方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • JavaScript实现生成随机密码的示例详解

    JavaScript实现生成随机密码的示例详解

    使用JavaScript我们可以轻松地在客户端生成随机密码,本文我们将实现一个简单的随机密码生成器,能够生成指定长度和包含特定字符集的密码,有需要的可以参考下
    2024-01-01
  • css静态滤镜 + A:Hover 效果

    css静态滤镜 + A:Hover 效果

    css静态滤镜 + A:Hover 效果...
    2007-05-05
  • JavaScript 箭头函数的特点、与普通函数的区别

    JavaScript 箭头函数的特点、与普通函数的区别

    这篇文章主要介绍了JavaScript 箭头函数的特点、与普通函数的区别,很多情况下,箭头函数和函数表达式创建的函数并无区别,只有写法上的不同,本文第二块内容将介绍箭头函数和普通函数功能上的区别,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • Three.js利用性能插件stats实现性能监听的方法

    Three.js利用性能插件stats实现性能监听的方法

    Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,而下面这篇文章主要给大家介绍了关于Three.js如何利用性能插件stats实现性能监听的相关资料,需要的朋友可以参考借鉴,下面来一起学习学习吧。
    2017-09-09
  • JS获取当前网页大小以及屏幕分辨率等

    JS获取当前网页大小以及屏幕分辨率等

    这篇文章主要介绍了JS获取当前网页大小以及屏幕分辨率等,方法虽简单,但比较实用,需要的朋友可以参考下
    2014-09-09
  • 浅析JS给原始数据类型加属性和方法为什么不报错

    浅析JS给原始数据类型加属性和方法为什么不报错

    这篇文章主要想和大家一起探讨一下JavaScript中给原始数据类型添加属性和方法为什么不报错,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2023-11-11

最新评论