zl程序教程

您现在的位置是:首页 >  前端

当前栏目

关于JavaScript命名空间的一些心得

JavaScript 关于 空间 一些 命名 心得
2023-06-13 09:15:27 时间

最近重构东西,碰到命名空间的设定,搜了一些知识,请教了一些高手,把自己的心得写下来
相信大家都知道,window是顶级的,这里就不写window了,先忽略

1:关于顶级

复制代码代码如下:
varns=ns||{};

可以看到,其实就是如果发现没有这个对象,就自动创建newObject();如果有,就直接使用这个对象,这样就不会覆盖。
2:第二级,当然也可以在顶级的ns下创建第二级,即
复制代码代码如下:
ns.ModuleClass={};

可以看到,在ns下创建了一个类,当然也可以继续创建类里的方法,即是这种:
复制代码代码如下:ns.ModuleClass.method1=function(){////};
3:多级应该怎么做呢,比如这种com.qw.view,我想把他设成一个命名空间,这就要对每一个点分隔的名称进行分别设置命名空间,分别设成对象

我们看一个例子,把他设置在window下:

复制代码代码如下:
functionnamespace(sSpace){
  vararr=sSpace.split("."),i=0,nameI;
  varroot=window;
  for(;nameI=arr[i++];){
    if(!root[nameI]){
      root[nameI]={};
    }
    root=root[nameI];
  }
  returnroot;
}

可以看到确实是我上面说的思路,用了一个遍历,把分隔的全部设成对象,这样每个分隔的都可以单独用。

4:列一下常用的,简单快捷的设置命名空间的小技巧吧

复制代码代码如下:
if(!window.ns){
  window.ns={};
}
varns;
if(typeofns=="undefined"){
  ns={};
}
if(typeofns.ClassName=="undefined"){
  ns.ClassName={};
}