资讯专栏INFORMATION COLUMN

javaScript命名空间的实现

xioqua / 276人阅读

摘要:命名空间的实现在全局管理命名空间,可以把命名挂在在这个全局对象上,来实现命名空间的整合和通信。按照约定的命名规范,将本变量注册到全局大型项目中,变量对象会出现多层级的结构,如一层一层注册。

大型项目中-javaScript如何解决命名冲突

要解决命名冲突,即必须保证,本模块的变量不会被其他模块污染,为了保证命名空间的整洁,希望能够在全局把这些变量用一种规范的方式组织起来。

命名空间的实现

在全局管理命名空间,可以把命名挂在在window这个全局对象上,来实现命名空间的整合和通信。

按照约定的命名规范,将本变量注册到全局

大型项目中,变量对象会出现多层级的结构,如:school.class.people,一层一层注册。

实现
var program={};
program.Namespace = {
    register: function(ns){
        var nsParts = ns.split(".");
        var root = window;
        for (var i = 0; i < nsParts.length; i++) {
            if (typeof root[nsParts[i]] == "undefined") {
                root[nsParts[i]] = new Object();
            }
            root = root[nsParts[i]];
        }
    }
};
使用

以实例化一个对象为例

program.Namespace.register("earth.China");
earth.China.Shanghai=function () {
    this.init();
}
earth.China.Shanghai.prototype={
    constructor:earth.China.Shanghai,
    init:function () {
        console.log("this is Shanghai");
    }
}
new earth.China.Shanghai();

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84964.html

相关文章

  • 【译】JavaScript 命名空间

    摘要:前缀命名空间如果命名空间的目的是避免冲突的话。语言程序经常使用前缀命名空间。我认为前缀命名空间是中最清楚明白的命名空间系统。对象命名空间的一个问题是它会导致与面向对象消息传递混淆。嵌套命名空间的幻觉在中也存在。 原文链接:《JavaScript Namespacing》译文原链:【译】JavaScript 命名空间 JavaScript 中有很多可以给你的对象安全分配命名空间的方法。这...

    liujs 评论0 收藏0
  • JavaScript命名空间

    摘要:什么是命名空间命名空间英语表示标识符的可见范围。通用命名空间函数语言的与语法中,没有内置命名空间,但这种特征非常容易实现。添加到命名空间的属性可能已经存在,所以再添加属性或者创建命名空间之间,我们应该先检查命名空间是否存在。 什么是命名空间 命名空间(英语:Namespace)表示标识符(identifier)的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互...

    Forelax 评论0 收藏0
  • 【译】JavaScript命名空间

    摘要:原文链接译文原链译中的命名空间全局变量应该由有系统范围相关性的对象们保留,并且它们的命名应该避免含糊并尽量减少命名冲突的风险。其他的考虑我希望避免命名空间嵌套。因为并没有正式的命名空间结构,所以有很多自然形成的方法。 原文链接: Namespacing in JavaScript译文原链: 【译】JavaScript 中的命名空间 全局变量应该由有系统范围相关性的对象们保留,并且它们的...

    Crazy_Coder 评论0 收藏0
  • JavaScript设计模式】单例模式

    摘要:此时我们创建的对象内保存静态变量通过取值器访问,最后将这个对象作为一个单例放在全局空间里面作为静态变量单例对象供他人使用。 单例模式 又被称为单体模式,是只允许实例化一次的对象类。有时我们也用一个对象来规划一个命名空间,井井有条的管理对象上面的属性和方法。 传统的面向对象语言中单例模式的实现,均是单例对象从类中创建而来,在以类为中心的语言中,这是很常见的做法。如果需要某个对象,就必须先...

    zhaot 评论0 收藏0
  • JS进阶篇--命名空间模式解析

    摘要:示例如下可以很容易的为对象字面量定义功能可以进一步支撑对象命名空间与为对象添加属性一样,我们也可以直接将属性添加到命名空间。对象字面量方法不会污染全局命名空间,并在逻辑上协助组织代码和参数。 简介 在SF上看到这样一个提问:如题,因为不得已的原因,需要写若干个全局函数。但又不想这样: window.a = function(){} window.b = function(){} win...

    warmcheng 评论0 收藏0

发表评论

0条评论

xioqua

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<