这是在javascript中创建命名空间的好方法吗?

时间:2013-05-25 05:08:58

标签: javascript javascript-namespaces

我一直在阅读有关在JavaScript中使用with关键字的大量帖子,问题和文章。一些文章警告不要使用Javascript的with关键字,所以我想知道我的用法是否合适。

我的大多数编程经验都是在C#和Java中,因此在创建相关对象时,命名空间对我来说很有意义。

我正在尝试的方法是首先将根命名空间创建为全局可访问的对象。对象成员是第一级命名空间,它们也是对象。

何时将对象添加到命名空间,我使用Javascript with关键字使本地的成员可以使用with的范围进行访问。在名称空间中移动时,嵌套with并将参数设置为要输入的名称空间。

以下是一个例子:

var Namespace = {
    SubNamespace1: {},
    SubNamespace2: {}

}
with (Namespace) {

    with (SubNamespace1) {

        SubNamespace1.FirstClass = {
            foo: function() {
                SecondClass.bar();
            },
            bar: function() {
                SecondClass.foo();
            }

        },
        SubNamespace1.SecondClass = {
            foo: function() {
                FirstClass.bar();
            },
            bar: function() {
                FirstClass.foo();
            }
        }
    }

    with (SubNamespace2) {

        SubNamespace2.FirstClass = {
            foo: function() {
                SecondClass.bar();
            },
            bar: function() {
                SecondClass.foo();
            }
        },
        SubNamespace2.SecondClass = {
            foo: function() {
                FirstClass.bar();
            },
            bar: function() {
                FirstClass.foo();
            }
        }
    }
}

0 个答案:

没有答案