关于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 相关文章推荐
Raphael一个用于在网页中绘制矢量图形的Javascript库
Jan 08 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
Mar 13 Javascript
javascript实现的网站访问量统计代码
Dec 20 Javascript
Javascript打印局部页面实例
Jun 21 Javascript
js原生实现FastClick事件的实例
Nov 20 Javascript
深入理解JS继承和原型链的问题
Dec 17 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
Aug 17 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
Mar 06 Javascript
JS基于封装函数实现的表格分页完整示例
Jun 26 Javascript
教你如何用Node实现API的转发(某音乐)
Sep 20 Javascript
Echarts实现多条折线可拖拽效果
Dec 19 Javascript
vue实现图片上传功能
May 28 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+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
coreseek 搜索英文的问题详解
2013/06/08 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
分分钟入门python语言
2018/03/20 Python
pycham查看程序执行的时间方法
2018/11/29 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
户外活动总结范文
2014/04/30 职场文书
大三学习计划书范文
2014/05/02 职场文书
学生打架检讨书
2014/10/20 职场文书
自我工作评价范文
2015/03/06 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
大学体育课感想
2015/08/10 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS