命名空间是通过为项目或库创建一个全局对象,然后将所有功能添加到该全局变量中。通过减少程序中全局变量的数量,实现单全局变量,从而在具有大量函数、对象和其他变量的情况下不会造成全局污染,同时也避免了命名冲突等问题。

然而,在不同的文件中给一个命名空间添加属性的时候,首先要保证这个命名空间是已经存在的,同时不对已有的命名空间造成任何破坏。可以通过非破坏性的命名空间函数实现:

var KUI = KUI || {};

KUI.utils = KUI.utils || {};

KUI.utils.namespace = function(ns){

    var parts = ns.split("."),

        object = KUI,

        i, len;

    if(parts[0] === "KUI"){

        parts = parts.slice(1);

    }

    for(i = 0, len = parts.length; i < len; i+=1){

        if(!object[parts[i]]){

            object[parts[i]] = {};

        }

        object = object[parts[i]];

    }

    return object;

};

用法:

KUI.utils.namespace("KUI.common");

KUI.utils.namespace("KUI.common.testing");

KUI.utils.namespace("KUI.modules.function.plugins");

KUI.utils.namespace("format");

看一下经过上述后KUI都有什么:

{

    "utils": {},

    "common": {

        "testing": {}

    },

    "modules": {

        "function": {

            "plugins": {}

        }

    },

    "format": {}

}

命名空间模式的缺点

  1. 需要输入更长的字符,并且需要更长的解析时间;
  2. 对单全局变量的依赖性,即任何代码都可以修改该全局实例,其他代码将获得修改后的实例。

最新文章

  1. 转:ProgressMonitorDialog
  2. border在IE6设置transparent无效
  3. MapGuide Maestro 5.1发布了
  4. 基于busybox和LFS的linux系统定制
  5. phalcon: 视图集成(内嵌模板)
  6. javascript——集合类
  7. PHP生成数字+字符混合型字符串
  8. C++ 习题 输出日期时间--友元类
  9. My97DatePicker显示时间控件的使用方法
  10. Linux 上做免密码登陆
  11. STL中map的用法
  12. SharePoint Online Add-in 开发简介
  13. Android为TV端助力 Service 两种启动方式的区别
  14. python2.x版本与python3.x版本的区别以及运算符
  15. (转)Web.config配置文件详解
  16. IDEA 类图功能使用方法
  17. HTML DOM 学习笔记
  18. windows下使用sed和tee命令
  19. webpack系统配置
  20. 【JS】【1】JavaScript屏蔽Backspace键(避免点击后页面产生回退)

热门文章

  1. 98、EditText 按键盘查询 触发事件
  2. dedeCMS安装,前端样式不显示
  3. play framework (一)
  4. 反人类的MyEclipse之-MyEclipse设置Console字体大小
  5. 最最基层的ajax交互代码jquery+java之间的json跨域传递以及java的json代码返回
  6. jQuery制作图片的等比例缩放
  7. [Android疑难杂症]动态改变Background后Padding无效的问题
  8. BPMN
  9. oracle参数open_cursors和session_cached_cursor详解!
  10. maya user guider第一课,一些基本概念