关于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实现奇偶行赋值不同css值
Feb 17 Javascript
常用一些Javascript判断函数
Aug 14 Javascript
自动刷新网页,自动刷新当前页面,JS调用
Jun 24 Javascript
JavaScript Ajax编程 应用篇
Jul 02 Javascript
fullpage.js全屏滚动插件使用实例
Sep 06 Javascript
Jquery 整理元素选取、常用方法一览表
Nov 26 Javascript
实例讲解Vue.js中router传参
Apr 22 Javascript
vue项目base64字符串转图片的实现代码
Jul 13 Javascript
Vue 表情包输入组件的实现代码
Jan 21 Javascript
Vue + Element UI图片上传控件使用详解
Aug 20 Javascript
多个vue子路由文件自动化合并的方法
Sep 03 Javascript
vue指令v-html使用过滤器filters功能实例
Oct 25 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
python实现输入数字的连续加减方法
2018/06/22 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
Python字符串格式化输出代码实例
2019/11/22 Python
浅析Django中关于session的使用
2019/12/30 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
python中time、datetime模块的使用
2020/12/14 Python
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
实用的简历自我评价
2014/03/06 职场文书
村级换届选举方案
2014/05/10 职场文书
学生通报表扬范文
2015/05/04 职场文书
纪录片信仰观后感
2015/06/08 职场文书
班委竞选稿范文
2015/11/21 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
python分分钟绘制精美地图海报
2022/02/15 Python