首页 > 代码库 > 今天和组内一起写代码时碰到了一个关于命名冲突的问题,最后用js命名空间的方法解决的。

今天和组内一起写代码时碰到了一个关于命名冲突的问题,最后用js命名空间的方法解决的。

 

//第一步,首先创建一个全局变量,可以放在自己的js方法库中方便以后用,这个就是用来注册命名空间的方法。

ns = function(namespace)
{
var arr = namespace.split(‘.‘);  //将传入的字符串如"com.test.lzn"以‘.‘隔开做成一个数组
var strNamespace = "";  //这个是为了保存每一步循环进去的包名
for(var i=0;i<arr.length;i++)
{
if(i!=0) strNamespace+=‘.‘;  //第一层如com是不需要加点的,但是后面的包名拼接需要加上字符‘.‘
strNamespace+=arr[i];

//console.log("if (typeof("+strNamespace+")==‘undefined‘) "+strNamespace+"=new Object()");  这句话是最重要的一句,去拼接一个js字符串,判断当前包名是否已经被用,如果没有,就创建一个新的对象。

eval("if (typeof("+strNamespace+")==‘undefined‘) "+strNamespace+"=new Object()");
}
}

 

//第二步,注册命名空间,告诉内存我要将这个字符串如"com.test.lzn"作为命名空间以方便以后使用

ns(‘com.test.lzn‘);

 

//第三步,正式测试使用

com.test.lzn.fn1 = function()
{
alert(‘a‘);
}
com.test.lzn.fn1();

 

已成功,哈哈~~~