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 相关文章推荐
解析URI与URL之间的区别与联系
Nov 22 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
Jan 12 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
Jun 03 Javascript
js实现表单及时验证功能 用户信息立即验证
Sep 13 Javascript
javascript中json对象json数组json字符串互转及取值方法
Apr 19 Javascript
详解vue-cli3使用
Aug 14 Javascript
layui实现table加载的示例代码
Aug 14 Javascript
创建Vue项目以及引入Iview的方法示例
Dec 03 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
Mar 11 Javascript
vue实现可视化可拖放的自定义表单的示例代码
Mar 20 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
May 10 Javascript
jquery+css3实现的经典弹出层效果示例
May 16 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之第十天
2006/10/09 PHP
珊瑚虫IP库浅析
2007/02/15 PHP
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
PHP对象实例化单例方法
2017/01/19 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
JavaScript中的Window窗口对象
2008/01/16 Javascript
JavaScript中的关键字&quot;VAR&quot;使用详解 分享
2013/07/31 Javascript
JavaScript操作cookie类实例
2015/03/31 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
js实现分割上传大文件
2016/03/09 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python实现比较两个列表(list)范围
2015/06/12 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
如何在python中写hive脚本
2019/11/08 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
python字符串判断密码强弱
2020/03/18 Python
Python如何进行时间处理
2020/08/06 Python
关于python中导入文件到list的问题
2020/10/31 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
与世界上最好的跑步专业品牌合作:Fleet Feet
2019/03/22 全球购物
绿色城市实施方案
2014/03/19 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书