关于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 相关文章推荐
豆瓣网的jquery代码实例
Jun 15 Javascript
读jQuery之八 包装事件对象
Jun 21 Javascript
Three.js源码阅读笔记(Object3D类)
Dec 27 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
Mar 19 Javascript
jQuery取得设置清空select选择的文本与值
Jul 08 Javascript
jQuery实现的文字hover颜色渐变效果实例
Feb 20 Javascript
关于js二维数组和多维数组的定义声明(详解)
Oct 02 Javascript
jquery精度计算代码 jquery指定精确小数位
Feb 06 Javascript
ES6中Array.find()和findIndex()函数的用法详解
Sep 16 Javascript
在Vant的基础上封装下拉日期控件的代码示例
Dec 05 Javascript
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
什么是SOLID
Mar 24 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
php 短链接算法收集与分析
2011/12/30 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
PHP实现的操作数组类库定义与用法示例
2019/05/24 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
深入了解javascript中的prototype与继承
2013/04/14 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
Python读写Excel文件方法介绍
2014/11/22 Python
python常用函数详解
2016/09/13 Python
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
python opencv之SIFT算法示例
2018/02/24 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
python用for循环求和的方法总结
2019/07/08 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
redis protocol通信协议及使用详解
2022/07/15 Redis