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 相关文章推荐
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
Jan 27 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
Mar 28 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
Aug 26 Javascript
AngularJS 依赖注入详解和简单实例
Jul 28 Javascript
JS中substring与substr的用法
Nov 16 Javascript
canvas实现简易的圆环进度条效果
Feb 28 Javascript
JQuery Ajax 异步操作之动态添加节点功能
May 24 jQuery
深入浅析vue组件间事件传递
Dec 29 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
Jul 13 Javascript
对Vue beforeRouteEnter 的next执行时机详解
Aug 25 Javascript
深入分析element ScrollBar滚动组件源码
Jan 22 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 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的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
php中in_array函数用法探究
2014/11/25 PHP
Yii rules常用规则示例
2016/03/15 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
python通过floor函数舍弃小数位的方法
2015/03/17 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
医院后勤自我鉴定
2013/10/13 职场文书
教师个人的自我评价分享
2014/01/02 职场文书
委托书怎样写
2014/08/30 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
Python实现byte转integer
2021/06/03 Python
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android