关于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 相关文章推荐
extjs form textfield的隐藏方法
Dec 29 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
Mar 20 Javascript
js获取下拉列表的值和元素个数示例
May 07 Javascript
深入讲解AngularJS中的自定义指令的使用
Jun 18 Javascript
js操作XML文件的实现方法兼容IE与FireFox
Jun 25 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
Jul 27 Javascript
IONIC自定义subheader的最佳解决方案
Sep 22 Javascript
node.js缺少mysql模块运行报错的解决方法
Nov 13 Javascript
js正则表达式验证密码强度【推荐】
Mar 03 Javascript
解决vue router使用 history 模式刷新后404问题
Jul 19 Javascript
VueJs 将接口用webpack代理到本地的方法
Nov 27 Javascript
vue动态绘制四分之三圆环图效果
Sep 03 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句法规则详解 入门学习
2011/11/09 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
Python生成不重复随机值的方法
2015/05/11 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
Python实现一个简单的验证码程序
2017/11/03 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
公司管理建议书范文
2014/03/12 职场文书
中国梦主题教育活动总结
2014/05/05 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
天气温馨提示语
2015/07/14 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python