关于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 相关文章推荐
文本加密解密
Jun 23 Javascript
javascript 数组的方法集合
Jun 05 Javascript
理解Javascript_14_函数形式参数与arguments
Oct 20 Javascript
Javascript处理DOM元素事件实现代码
May 23 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
Apr 15 Javascript
JavaScript实现GriwView单列全选(自写代码)
May 13 Javascript
JavaScript中如何通过arguments对象实现对象的重载
May 12 Javascript
TypeScript 中接口详解
Jun 19 Javascript
javascript中使用new与不使用实例化对象的区别
Jun 22 Javascript
12个非常实用的JavaScript小技巧【推荐】
May 18 Javascript
angularjs路由传值$routeParams详解
Sep 05 Javascript
JavaScript实现网页计算器功能
Oct 29 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关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
vc6编写python扩展的方法分享
2014/01/17 Python
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
Django框架多表查询实例分析
2018/07/04 Python
python如何生成网页验证码
2018/07/28 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
领导班子四风表现材料
2014/08/23 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
团组织推荐意见
2015/06/05 职场文书
工作建议书范文
2019/07/08 职场文书
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python