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 相关文章推荐
javascript 嵌套的函数(作用域链)
Mar 15 Javascript
JSON 数据格式介绍
Jan 13 Javascript
JS倒计时代码汇总
Nov 25 Javascript
js 获取当前web应用的上下文路径实现方法
Aug 19 Javascript
AngularJS中过滤器的使用与自定义实例代码
Sep 17 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
vue进行图片的预加载watch用法实例讲解
Feb 07 Javascript
使用Vue CLI创建typescript项目的方法
Aug 09 Javascript
electron实现静默打印的示例代码
Aug 12 Javascript
详解ECMAScript2019/ES10新属性
Dec 06 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
Feb 06 Javascript
谈谈JavaScript中的函数
Sep 08 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中file_put_contents追加和换行的实现方法
2017/04/01 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
2018/04/20 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
python链接Oracle数据库的方法
2015/06/28 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
Python模块WSGI使用详解
2018/02/02 Python
Python 使用多属性来进行排序
2019/09/01 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
详解Canvas事件绑定
2018/06/27 HTML / CSS
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
行政人事岗位职责
2014/03/17 职场文书
车间主任岗位职责范本
2015/04/08 职场文书
python 调用js的四种方式
2021/04/11 Python
Python实战之实现康威生命游戏
2021/04/26 Python
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
源码解读Spring-Integration执行过程
2021/06/11 Java/Android
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
Python安装使用Scrapy框架
2022/04/12 Python
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python