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使用prototype定义对象类型
Feb 07 Javascript
用js统计用户下载网页所需时间的脚本
Oct 15 Javascript
js中判断控件是否存在
Aug 25 Javascript
使用jquery读取html5 localstorage的值的方法
Jan 04 Javascript
jquery实现的下拉和收缩效果示例
Aug 21 Javascript
jQuery替换textarea中换行的方法
Jun 10 Javascript
js仿拉勾网首页穿墙广告效果
Mar 08 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
Apr 12 Javascript
React如何利用相对于根目录进行引用组件详解
Oct 09 Javascript
Vue使用轮询定时发送请求代码
Aug 10 Javascript
ES2020让代码更优美的运算符 (?.) (??)
Jan 04 Javascript
jQuery实现购物车全功能
Jan 11 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
php5新改动之短标记启用方法
2008/09/11 PHP
PHP打印输出函数汇总
2016/08/28 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
又一枚精彩的弹幕效果jQuery实现
2016/07/25 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
2018/11/13 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
详解tensorflow2.x版本无法调用gpu的一种解决方法
2020/05/25 Python
python3.5的包存放的具体路径
2020/08/16 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
军训自我鉴定
2014/01/22 职场文书
高中学生评语大全
2014/04/25 职场文书
企业安全生产标语
2014/06/06 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android