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 相关文章推荐
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
Jan 04 Javascript
Vue.js动态组件解析
Sep 09 Javascript
bootstrap日历插件datetimepicker使用方法
Dec 14 Javascript
深入理解JavaScript中的尾调用(Tail Call)
Feb 07 Javascript
Express进阶之log4js实用入门指南
Feb 10 Javascript
Vue中使用vue-i18插件实现多语言切换功能
Apr 25 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
Jun 04 Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
Jun 10 jQuery
uniapp实现可滑动选项卡
Oct 21 Javascript
vue如何实现关闭对话框后刷新列表
Apr 08 Vue.js
vue使用element-ui按需引入
May 20 Vue.js
完美解决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
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
PHP的5个安全措施小结
2012/07/17 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
js中的this关键字详解
2013/09/25 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
node.js中watch机制详解
2014/11/17 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
python处理大数字的方法
2015/05/27 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
Python 实现数组相减示例
2019/12/27 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
园林施工员岗位职责
2013/12/11 职场文书
市场拓展计划书
2014/05/03 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
员工试用期自我评价
2014/09/18 职场文书
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android