【发布时间】:2013-08-01 23:44:35
【问题描述】:
有没有办法在不污染全局命名空间的情况下在单独的文件中创建私有类?目前我只是创建一个子命名空间并将所有其他公共类需要运行的私有类放入,但是有没有办法让一个类完全私有,但在另一个文件中?
【问题讨论】:
标签: javascript oop
有没有办法在不污染全局命名空间的情况下在单独的文件中创建私有类?目前我只是创建一个子命名空间并将所有其他公共类需要运行的私有类放入,但是有没有办法让一个类完全私有,但在另一个文件中?
【问题讨论】:
标签: javascript oop
您可能正在寻找 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,当然还有谷歌搜索,因为你知道它叫什么。
【讨论】: