将私有类放在单独的文件中

时间:2013-08-01 23:44:36

标签: javascript oop

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

1 个答案:

答案 0 :(得分: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

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

您可以在此处阅读更多相关信息:http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html,当然还有谷歌搜索,因为您知道它的名称。