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 相关文章推荐
jquery实现居中弹出层代码
Aug 25 Javascript
js相册效果代码(点击创建即可)
Apr 16 Javascript
浏览器缩放检测的js代码
Sep 28 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
Sep 04 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
javascript 实现动态侧边栏实例详解
Nov 11 Javascript
node.js发送邮件email的方法详解
Jan 06 Javascript
微信小程序利用co处理异步流程的方法教程
May 20 Javascript
angular select 默认值设置方法
Jun 23 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
Jan 12 Javascript
Vue自定义指令实现checkbox全选功能的方法
Feb 28 Javascript
Vue路由 重定向和别名的区别说明
Sep 09 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常用的缓存技术汇总
2014/05/05 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
JavaScript 学习笔记(六)
2009/12/31 Javascript
document.getElementById介绍
2011/09/13 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
JS hashMap实例详解
2016/05/26 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
python生成器的使用方法
2013/11/21 Python
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
python中PIL安装简单教程
2016/04/21 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
详解python并发获取snmp信息及性能测试
2017/03/27 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
银行个人求职自荐信范文
2013/12/16 职场文书
迎新生晚会主持词
2015/06/30 职场文书
网络研修随笔感言
2015/11/18 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
Java基础——Map集合
2022/04/01 Java/Android