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 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
Jun 29 Javascript
DOM_window对象属性之--clipboardData对象操作代码
Feb 03 Javascript
Package.js  现代化的JavaScript项目make工具
May 23 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
Jan 06 Javascript
js实现文字在按钮上滚动的方法
Aug 20 Javascript
基于Vuejs框架实现翻页组件
Jun 29 Javascript
vue2.0开发实践总结之入门篇
Dec 06 Javascript
深入理解javascript的getTime()方法
Feb 16 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
Mar 21 Javascript
vue完成项目后,打包成静态文件的方法
Sep 03 Javascript
Vue源码解析之数组变异的实现
Dec 04 Javascript
extjs图形绘制之饼图实现方法分析
Mar 06 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面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
php5与php7的区别点总结
2019/10/11 PHP
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
一个实用的图片切换支持点击切换和自动轮播
2014/09/09 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
vue路由--网站导航功能详解
2019/03/29 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
Python程序员开发中常犯的10个错误
2014/07/07 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
Python中functools模块的常用函数解析
2016/06/30 Python
浅谈Python基础之I/O模型
2017/05/11 Python
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
Django 前后台的数据传递的方法
2017/08/08 Python
python对excel文档去重及求和的实例
2018/04/18 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
易程科技软件测试笔试
2013/03/24 面试题
学生发电厂实习自我鉴定
2013/09/22 职场文书
采购主管岗位职责
2014/02/01 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
起诉书格式范文
2015/05/20 职场文书
小学英语课教学反思
2016/02/15 职场文书
Spring 使用注解开发
2022/05/20 Java/Android