Javascript 命名空间模式

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

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

复制代码 代码如下:

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.对单全局变量的依赖性,即任何代码都可以修改该全局实例,其他代码将获得修改后的实例。

相关文章

  • layui之table checkbox初始化时选中对应选项的方法

    layui之table checkbox初始化时选中对应选项的方法

    今天小编就为大家分享一篇layui之table checkbox初始化时选中对应选项的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 通过微信公众平台获取公众号文章的方法示例

    通过微信公众平台获取公众号文章的方法示例

    这篇文章主要介绍了通过微信公众平台获取公众号文章的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 火狐textarea输入法的bug的触发及解决

    火狐textarea输入法的bug的触发及解决

    在firefox中,如果一个textarea获取焦点,在输入法激活的状态如果这时js将该textarea的value修改,那么该textarea会直接被清空,下面是具体的解决方法,遇到类似问题的朋友可以参考下
    2013-07-07
  • javascript从作用域链谈闭包

    javascript从作用域链谈闭包

    这篇文章主要从作用域链谈闭包,闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现,本文针对闭包进行学习,需要的朋友可以参考下
    2015-12-12
  • Meta 标签生成器

    Meta 标签生成器

    非常不错的可以生产标签的小东西
    2008-04-04
  • JS 获取页面尺寸的方法详解

    JS 获取页面尺寸的方法详解

    通过 JS 获取页面相关的尺寸是比较常见的操作,尤其是在动态计算页面布局时,今天我们就来学习一下几个获取页面尺寸的基本方法,需要的朋友可以参考下
    2023-09-09
  • ExtJs使用自定义插件动态保存表头配置(隐藏或显示)

    ExtJs使用自定义插件动态保存表头配置(隐藏或显示)

    这篇文章主要介绍了ExtJs使用自定义插件动态保存表头配置(隐藏或显示) ,需要的朋友可以参考下
    2018-09-09
  • js与运算符和或运算符的妙用

    js与运算符和或运算符的妙用

    这篇文章主要介绍了js与运算符和或运算符的使用方法,需要的朋友可以参考下
    2014-02-02
  • uniapp项目引入 js文件以及全局使用方法

    uniapp项目引入 js文件以及全局使用方法

    这篇文章主要给大家介绍了关于uniapp项目引入 js文件以及全局使用方法的相关资料,在Uniapp中引入JS文件是一项常见的操作,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Javascript 事件流和事件绑定

    Javascript 事件流和事件绑定

    本文中的部分观点参考至《Javascript高级程序设计》(很好的一本书,推荐大家看看!),addEvent函数借鉴了YUI2.7的_addListener方法,这里也要谢谢YUI那些牛人,向他们致敬!
    2009-07-07

最新评论