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


Posted in Javascript onJune 07, 2014

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

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 = {};
}
Javascript 相关文章推荐
收集的一些Array及String原型对象的扩展实现代码
Dec 05 Javascript
利用JS自动打开页面上链接的实现代码
Sep 25 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
Jul 25 Javascript
详细分析JavaScript变量类型
Jul 08 Javascript
easyui validatebox验证
Apr 29 Javascript
基于ajax和jsonp的原生封装(实例)
Oct 16 Javascript
vue中使用element-ui进行表单验证的实例代码
Jun 22 Javascript
js实现动态添加上传文件页面
Oct 22 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
Dec 13 Javascript
13 个npm 快速开发技巧(推荐)
Jul 04 Javascript
Vue实现Layui的集成方法步骤
Apr 10 Javascript
详解前端任务构建利器Gulp.js使用指南
Apr 30 Javascript
javascript随机之洗牌算法深入分析
Jun 07 #Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
Jun 07 #Javascript
js中的caller和callee属性介绍和例子
Jun 07 #Javascript
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 #Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
Jun 07 #Javascript
JavaScript异步回调的Promise模式封装实例
Jun 07 #Javascript
jQuery的缓存机制浅析
Jun 07 #Javascript
You might like
html静态页面调用php文件的方法
2014/11/13 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
javascript的this关键字详解
2019/05/20 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
2019/06/10 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
Python卸载模块的方法汇总
2016/06/07 Python
pytorch 共享参数的示例
2019/08/17 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
探亲邀请信范文
2014/01/30 职场文书
音乐教育感言
2014/03/05 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
兵马俑的导游词
2015/02/02 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技