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 相关文章推荐
IE8 原生JSON支持
Apr 13 Javascript
基于jquery的direction图片渐变动画效果
May 24 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
Jan 11 Javascript
ECMAScript6中Set/WeakSet详解
Jun 12 Javascript
利用jQuery和CSS将背景图片拉伸
Oct 16 Javascript
鼠标悬停小图标显示大图标
Jan 22 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
Sep 21 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
Mar 03 Javascript
利用Javascript开发一个二维周视图日历
Dec 14 Javascript
JS交互点击WKWebView中的图片实现预览效果
Jan 05 Javascript
在vue项目中引入vue-beauty操作方法
Feb 11 Javascript
jquery html添加元素/删除元素操作实例详解
May 20 jQuery
完美解决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中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
JavaScript在for循环中绑定事件解决事件参数不同的情况
2014/01/20 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
Python 通过pip安装Django详细介绍
2017/04/28 Python
python enumerate函数的使用方法总结
2017/11/15 Python
django中的setting最佳配置小结
2017/11/21 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
python-地图可视化组件folium的操作
2020/12/14 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
军训自我鉴定
2013/12/14 职场文书
学生会离职感言
2014/02/11 职场文书
机械机修工岗位职责
2014/08/03 职场文书
2014年技术员工作总结
2014/11/18 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
与死神共舞观后感
2015/06/15 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
Nginx反向代理配置的全过程记录
2021/06/22 Servers