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 相关文章推荐
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
Sep 12 Javascript
让js弹出窗口居前显示的实现方法
Jul 10 Javascript
jquery对table中各数据的增加、保存、删除操作示例
May 14 Javascript
JS实现判断碰撞的方法
Feb 11 Javascript
js带前后翻页的图片切换效果代码分享
Sep 08 Javascript
javascript新闻跑马灯实例代码
Jul 29 Javascript
详解Bootstrap glyphicons字体图标
Jan 04 Javascript
javascript每日必学之多态
Feb 23 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
Mar 07 Javascript
通过命令行生成vue项目框架的方法
Jul 12 Javascript
JavaScript截屏功能的实现代码
Jul 28 Javascript
jQuery实现颜色打字机的完整代码
Mar 19 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面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
YII框架关联查询操作示例
2019/04/29 PHP
javascript+mapbar实现地图定位
2010/04/09 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
[00:59]DOTA2背景故事第二期之四大基本法则
2020/07/07 DOTA
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
手机配件第一品牌:ZAGG
2017/05/28 全球购物
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
酒店管理专业毕业生推荐信
2013/11/10 职场文书
专科毕业生自我鉴定
2013/12/01 职场文书
总经理秘书的岗位职责
2013/12/27 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
个人授权委托书
2014/09/15 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
Java中的Kotlin 内部类原理
2022/06/16 Java/Android
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL