Javascript 命名空间模式


Posted in Javascript onNovember 01, 2013

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

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

Javascript 相关文章推荐
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
解析URI与URL之间的区别与联系
Nov 22 Javascript
简单的ajax连接库分享(不用jquery的ajax)
Jan 19 Javascript
Bootstrap实现默认导航栏效果
Sep 21 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
Vue2.x中的父组件传递数据至子组件的方法
May 01 Javascript
ES6中新增的Object.assign()方法详解
Sep 22 Javascript
微信小程序实现运动步数排行功能(可删除)
Jul 05 Javascript
对angularJs中ng-style动态改变样式的实例讲解
Sep 30 Javascript
vue模式history下在iis中配置流程
Apr 17 Javascript
在VUE中实现文件下载并判断状态的方法
Nov 08 Javascript
es6 super关键字的理解与应用实例分析
Feb 15 Javascript
完美解决AJAX跨域问题
Nov 01 #Javascript
javascript中创建对象的几种方法总结
Nov 01 #Javascript
如何学习Javascript入门指导
Nov 01 #Javascript
js动态设置鼠标事件示例代码
Oct 30 #Javascript
获取非最后一列td值并将title设为该值的方法
Oct 30 #Javascript
eclipse如何忽略js文件报错(附图)
Oct 30 #Javascript
Javascript 多浏览器兼容总结(实战经验)
Oct 30 #Javascript
You might like
php设置编码格式的方法
2013/03/05 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
js兼容标准的表格变色效果
2008/06/28 Javascript
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
常用的js方法合集
2017/03/10 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
用Python实现协同过滤的教程
2015/04/08 Python
Python简明入门教程
2015/08/04 Python
Python进阶篇之字典操作总结
2016/11/16 Python
python实现代码统计程序
2019/09/19 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
python 制作本地应用搜索工具
2021/02/27 Python
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
外语系毕业生找工作的求职信
2013/11/28 职场文书
企业文化宣传标语
2014/06/09 职场文书
大学运动会加油稿
2015/07/22 职场文书
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python