• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
晒不干的咸鱼
博客园    首页    新随笔    联系   管理    订阅  订阅
关于JS的顶级,多级命名空间的一些心得

最近重构东西,碰到命名空间的设定,搜了一些知识,请教了一些高手,把自己的心得写下来

相信大家都知道,window是顶级的,这里就不写window了,先忽略

1:关于顶级

1 var ns = ns || {};

可以看到,其实就是如果发现没有这个对象,就自动创建new Object();如果有,就直接使用这个对象,这样就不会造成覆盖。


2: 第二级,当然也可以在顶级的ns下创建第二级,即

ns.ModuleClass = {};

可以看到,在ns下创建了一个类,当然也可以继续创建类里的方法,即是这种:

ns.ModuleClass.method1= function() {
////
};

3:多级应该怎么做呢,比如这种com.qw.view,我想把他设成一个命名空间,这就要对每一个点分隔的名称进行分别设置命名空间,分别设成对象

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

function namespace(sSpace) {
var arr = sSpace.split('.'),i = 0,nameI;
var root = window;
for (; nameI = arr[i++];) {
if (!root[nameI]) {
root[nameI] = {};
}
root = root[nameI];
}
return root;
}

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

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

if (!window.ns) {
window.ns = {};
}
var ns;
if(typeof ns == "undefined"){
ns = {};
}
if(typeof ns.ClassName == "undefined")
{
ns.ClassName = {};
}




posted on 2012-02-09 21:00  晒不干的咸鱼  阅读(629)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3