关于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 相关文章推荐
prototype Element学习笔记(Element篇三)
Oct 26 Javascript
javascript 定义新对象方法
Feb 20 Javascript
浅谈JavaScript 的执行顺序
Aug 07 Javascript
js实现的二分查找算法实例
Jan 21 Javascript
JS封装的自动创建表格的实现代码
Jun 15 Javascript
用AngularJS来实现监察表单按钮的禁用效果
Nov 02 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
Nov 20 Javascript
js实现文字跑马灯效果
Feb 23 Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
详解vue2.6插槽更新v-slot用法总结
Mar 09 Javascript
用JS实现选项卡
Mar 23 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 ADODB使用方法集锦
2008/03/25 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
js opener的使用详解
2014/01/11 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
python数据结构之二叉树的建立实例
2014/04/29 Python
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
Python中encode()方法的使用简介
2015/05/18 Python
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
Python定时器实例代码
2017/11/01 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
python实现简单的tcp 文件下载
2020/09/16 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
个人求职信范文分享
2013/12/13 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
妈妈活动方案
2014/08/15 职场文书
生活小常识广播稿
2015/08/19 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书