首页 > 代码库 > 今天和组内一起写代码时碰到了一个关于命名冲突的问题,最后用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();
已成功,哈哈~~~