关于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 相关文章推荐
使用正则替换变量
May 05 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
Sep 08 Javascript
高亮显示web页表格行的javascript代码
Nov 19 Javascript
js jquery数组介绍
Jul 15 Javascript
js数组Array sort方法使用深入分析
Feb 21 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
js调用webservice构造SOAP进行身份验证
Apr 27 Javascript
js发送短信倒计时的简单实现方法
Sep 08 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
Sep 20 Javascript
vue组件传递对象中实现单向绑定的示例
Feb 28 Javascript
Webpack 之 babel-loader文件预处理器详解
Mar 23 Javascript
微信小程序下拉框组件使用方法详解
Dec 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的几个常用数字判断函数代码
2012/04/24 PHP
file_get_contents("php://input", "r")实例介绍
2013/07/01 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
浅谈js中的bind
2019/03/18 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
python3.4爬虫demo
2019/01/22 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
旷课检讨书大全
2014/01/21 职场文书
大学生军训感想
2014/02/16 职场文书
大学生村官承诺书
2014/03/28 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
联谊会开场白
2015/06/01 职场文书
党性修养心得体会2016
2016/01/21 职场文书
公开致歉信
2019/06/24 职场文书
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript