关于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 相关文章推荐
javascript 对象定义方法 简单易学
Mar 22 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
javascript表单验证大全
Aug 12 Javascript
JavaScript 闭包详细介绍
Sep 28 Javascript
深入理解vue.js双向绑定的实现原理
Dec 05 Javascript
JavaScript实现无穷滚动加载数据
May 06 Javascript
AngularJs定时器$interval 和 $timeout详解
May 25 Javascript
详解用vue.js和laravel实现微信授权登陆
Jun 23 Javascript
react native 文字轮播的实现示例
Jul 27 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
Dec 03 Javascript
JavaScript模板引擎应用场景及实现原理详解
Dec 14 Javascript
vue+element-ui+axios实现图片上传
Aug 20 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取得一个类的属性和方法的实现代码
2011/05/22 PHP
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
jQuery DOM操作小结与实例
2010/01/07 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
javascript拖拽效果延伸学习
2016/04/04 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
JavaScript面向对象精要(上部)
2017/09/12 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
原生js实现购物车功能
2020/09/23 Javascript
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
在Django框架中设置语言偏好的教程
2015/07/27 Python
浅谈django中的认证与登录
2016/10/31 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
python配置grpc环境
2019/01/01 Python
python中_del_还原数据的方法
2020/12/09 Python
想学画画?python满足你!
2020/12/24 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
财务工作者先进事迹材料
2014/01/17 职场文书
秋冬农业生产标语
2014/10/09 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书