关于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学习笔记之 函数篇(二) : this 的工作机制
Jun 24 Javascript
jQuery中:has选择器用法实例
Dec 30 Javascript
JS表的模拟方法
Feb 05 Javascript
详解AngularJS中的依赖注入机制
Jun 17 Javascript
javascript实现tab切换特效
Nov 12 Javascript
JavaScript如何实现组合列表框中元素移动效果
Mar 01 Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 Javascript
JS实现websocket长轮询实时消息提示的效果
Oct 10 Javascript
JavaScript制作3D旋转相册
Aug 02 Javascript
微信小程序登陆注册功能的实现代码
Dec 10 Javascript
使用vue打包进行云服务器上传的问题
Mar 02 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实现的CSS更新类实例
2014/09/22 PHP
PHP的拦截器实例分析
2014/11/03 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
jquery live()调用不存在的解决方法
2014/02/26 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
python利用拉链法实现字典方法示例
2017/03/25 Python
解析Python的缩进规则的使用
2019/01/16 Python
Python调用Windows命令打印文件
2020/02/07 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
django实现日志按日期分割
2020/05/21 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
工程开工庆典邀请函
2014/02/01 职场文书
西式结婚主持词
2014/03/14 职场文书
青年文明号服务承诺
2014/03/31 职场文书
法律意见书范本
2015/06/04 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers