使用命名空间定义getElementsByClassName()函数
为了使模块间相互调用而不引起冲突,我们定义一些需要被其他模块使用的函数时要用命名空间来定义;
如我们需要一个通过类名来取得Dom节点集合的函数,我们希望将它定义在GLABAL.DOM下,我们可以用GLABAL.namespace()函数(参考我的另一篇博文,有专门介绍)来声明这个命名空间,GLABAL.namespace("Dom"),这样我们就声明了一个GLABAL.Dom命名空间,然后我们就使用它来定义getElementsByClassName()方法如下:
//通过类名获取元素节点集合函数getElementsByClassName() GLOBAL.Dom.getElementsByClassName=function(str,root,tag){ if(root){ root=typeof root=="string" ? document.getElementById(root):root; }else{ root=document.body; } tag=tag||"*"; var els=root.getElementsByTagName(tag),arr=[]; for(var i=0,n=els.length;i<n;i++){ for(var j=0,k=els[i].className.split(" "),l=k.length;j<l;j++){ if(k[j]==str){ arr.push(els[i]); break; } } } return arr; }
当我们在其他函数模块中需要使用它的时候我们就可以直接调用GLABAL.Dom.getElementsByClassName()来使用它了。