javascript - 这是用于制作将各种方法封装到不同对象中的命名空间的正确 javascript 吗?

标签 javascript namespaces object encapsulation

var namespaced = {
    A: function(){
        function r(){
            //do some stuff
            return something;
        }

        var someProperty = 5;     

        function j(){
            //do some more stuff
            return something;
        }     
    },

    B: function(){   
        //can I call A and C?
        A.r();
        C.d();
    },

    C: function(){
        function d() {
            //do stuff we like
        }    
    }
}

然后我可以做...

namespaced.A.j();

namespaced.C.d();

something = namespaced.A.someProperty;

对吗?

我也需要这样做吗?

var something = new namespaced.A()?

如果是这样,A() 是否有构造函数?我在这里真的很困惑:{

我正在尝试封装我的 javascript 以便于维护

最佳答案

Then I could do...

namespaced.A.j();
namespaced.C.d();
something = namespaced.A.someProperty;

不,你不能。函数 jsomeProperty 仅在 A 本地,不会传播到外部。如果你想从外部访问它们,你必须使它们成为函数的属性,使用 this:

var namespaced = {
    A: function(){
        this.r = function(){
            //do some stuff
            return something;
        };

        this.someProperty = 5;     

        this.j = function(){
            //do some more stuff
            return something;
        };
    }
}

但您仍然需要调用 var a = new namespaced.A() 才能访问这些函数。

如果您想直接调用 namespaced.A.j(),您必须将 A 声明为对象,而不是函数:

var namespaced = {
    A: {
        r: function(){
            //do some stuff
            return something;
        },

        someProperty: 5,     

        j: function(){
            //do some more stuff
            return something;
        }     
    }
}

所以这取决于你最终想要实现什么......为了更好地了解这些方法,我推荐JavaScript Patterns .

关于javascript - 这是用于制作将各种方法封装到不同对象中的命名空间的正确 javascript 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328704/

相关文章:

javascript - MSXML4 与 MSXML6 XSLT 解析命名空间错误

c++ - "nicer"替代局部变量名称前缀?

php - 从命名空间调用 php 函数

c++ - 无法在静态类函数中递增静态变量

javascript - 验证数组中的一些对象的干净方法是什么?

javascript - 我如何访问 Electron 中的 DOM 元素?

javascript - 如何在 PHP 中访问我的 Javascript 变量?

Ruby 使用命名空间/模块

c++ - 已删除的类实例上的方法仍然有效吗?

javascript - 如何从 Javascript 字典中获取特定键?