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中getJSON的使用方法
Dec 13 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
Feb 03 Javascript
jquery 表格的增行删行实现思路
Mar 21 Javascript
图片Slider 带左右按钮的js示例
Aug 30 Javascript
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 Javascript
javascript拖拽应用实例(二)
Mar 25 Javascript
JS Array创建及concat()split()slice()的使用方法
Jun 03 Javascript
bootstarp modal框居中显示的实现代码
Feb 18 Javascript
基于JavaScript实现移动端无限加载分页
Mar 27 Javascript
js中el表达式的使用和非空判断方法
Mar 28 Javascript
微信小程序全局变量的设置、使用、修改过程解析
Sep 24 Javascript
vue自动添加浏览器兼容前后缀操作
Aug 13 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
2019/09/10 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
跟老齐学Python之print详解
2014/09/28 Python
Python常用内置函数总结
2015/02/08 Python
Python2.x中文乱码问题解决方法
2015/06/02 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
python2和python3哪个使用率高
2020/06/23 Python
运行Python编写的程序方法实例
2020/10/21 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
实习销售业务员自我鉴定
2013/09/21 职场文书
监理员的岗位职责
2013/11/13 职场文书
实习心得体会
2014/01/02 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
《观舞记》教学反思
2014/04/16 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers