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获取指定日期前后的日期代码
Aug 20 Javascript
JS中的log对象获取以及debug的写法介绍
Mar 03 Javascript
html的DOM中document对象images集合用法实例
Jan 21 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
Jun 20 Javascript
JS实现购物车特效
Feb 02 Javascript
解析vue路由异步组件和懒加载案例
Jun 08 Javascript
Angular5中状态管理的实现
Sep 03 Javascript
JS 数组随机洗牌的实例代码
Sep 12 Javascript
Vue中使用canvas方法总结
Feb 12 Javascript
React 使用Hooks简化受控组件的状态绑定
Mar 18 Javascript
vue实现pdf文档在线预览功能
Nov 26 Javascript
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
Mar 31 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程序61条面向对象分析设计的经验小结
2008/11/12 PHP
php print EOF实现方法
2009/05/21 PHP
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
在vue中使用jointjs的方法
2018/03/24 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
python基础教程之udp端口扫描
2014/02/10 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
python中int与str互转方法
2018/07/02 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
恐龙的灭绝教学反思
2014/02/12 职场文书
国旗下演讲稿
2014/05/08 职场文书
2015年导购员工作总结
2015/04/25 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js