关于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图片阅览组件
Nov 09 Javascript
50个比较实用jQuery代码段
Sep 18 Javascript
jQuery Ajax请求状态管理器打包
May 03 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
May 02 Javascript
判断及设置浏览器全屏模式
Apr 20 Javascript
JavaScript监听和禁用浏览器回车事件实例
Jan 31 Javascript
Node.js中路径处理模块path详解
Nov 14 Javascript
解决Vue不能检测数组或对象变动的问题
Feb 24 Javascript
vue中设置、获取、删除cookie的方法
Sep 21 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
Jan 08 Javascript
详解element-ui中el-select的默认选择项问题
Aug 02 Javascript
详解如何在JS代码中消灭for循环
Dec 11 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
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
javascript 常用关键字列表集合
2007/12/04 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
python写的一个文本编辑器
2014/01/23 Python
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
python psutil库安装教程
2018/03/19 Python
Python3.5运算符操作实例详解
2019/04/25 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
亚马逊印度站:Amazon.in
2017/10/15 全球购物
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
linux面试题参考答案(4)
2013/01/28 面试题
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
中药学专业求职信
2014/05/31 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
安全教育主题班会总结
2015/08/14 职场文书