1

有没有办法在不污染全局命名空间的情况下在单独的文件中创建私有类?目前我只是创建一个子命名空间并将其他公共类需要运行的所有私有类放入,但是有没有办法让一个类完全私有,但在另一个文件中?

4

1 回答 1

1

您可能正在寻找 JavaScript 中的“模块模式”。模块模式名称可以引用许多不同的模式,但基本概念是声明仅对已调用的函数可用的函数和属性。像这样:

 myModule = function () {
    var me = {},
        iAmPrivate = 1;

     function privateFunc() {
        // stuff can access iAmPrivate and iamPublic
     }

     me.iamPublic = 1;
     me.publicFunc = function () {
        // stuff can access iAmPrivate and iamPublic
     };

     return me;

 }());

 myModule.publicFunc();  // this can be called
 myModule.iamPublic;     // this can be accessed

 myModule.iAmPrivate     // xx can't do this
 myModule.privateFunc()  // or this

由于闭包和作用域的工作原理,在该函数调用中声明的本地项可用于该函数调用中声明的所有函数,但在该函数调用之外没有任何内容。该函数已被调用,因此它们永远无法被访问。

你可以在这里阅读更多关于它的信息:http: //www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html,当然还有谷歌搜索,现在你知道它叫什么了。

于 2013-08-02T01:23:03.493 回答