关于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 相关文章推荐
JQuery Ajax通过Handler访问外部XML数据的代码
Jun 01 Javascript
基于jQuery的简单的列表导航菜单
Mar 02 Javascript
自定义jQuery选项卡插件实例
Mar 27 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
Oct 18 Javascript
JQuery 图片滚动轮播示例代码
Mar 24 Javascript
jQuery增加与删除table列的方法
Mar 01 Javascript
JS实现图片的不间断连续滚动的简单实例
Jun 03 Javascript
浅析Bootstrap表格的使用
Jun 23 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
Jul 22 Javascript
Vuejs 组件——props数据传递的实例代码
Mar 07 Javascript
详解jQuery中的easyui
Sep 02 jQuery
使用vue实现通过变量动态拼接url
Jul 22 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
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
基于Zend的Captcha机制的应用
2013/05/02 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
koa-router源码学习小结
2018/09/07 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
对TensorFlow中的variables_to_restore函数详解
2018/07/30 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
Keras实现DenseNet结构操作
2020/07/06 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
Puma印度官网:德国运动品牌
2019/10/06 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
判断单链表中是否存在环
2012/07/16 面试题
挑战杯创业计划书的写作指南
2014/01/07 职场文书
初中物理教学反思
2014/01/14 职场文书
个人安全承诺书
2014/05/22 职场文书
上课不认真检讨书
2014/09/17 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
2014年维修工作总结
2014/11/22 职场文书
检讨书格式范文
2015/05/07 职场文书
孔繁森观后感
2015/06/10 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB