我正在设计一个前端模块。由于我的团队熟悉OO风格的编程和.NET,我在很大程度上依赖于构造函数,每个函数目前都在自己的文件和自己的范围内。
请参阅以下示例设置。
档案employee.js
:
(function(my) {
"use strict";
my.Employee = function() {
var self = this;
self.name = "John Doe";
};
}(window["MyNamespace"]));
另一个文件company.js
:
(function(my) {
"use strict";
my.Company = function(data) {
var self = this, employees = [];
self.name = data.name || "New company";
self.spawnNewEmployee = function() {
employees.push(new my.Employee());
}
};
}(window["MyNamespace"]));
重要位:我的构建过程会将这些文件捆绑并缩小为最终文件。我推迟了决定某项特定技术(可能是我的实际问题,不确定)。
问题:任何有Employee
访问权的人都可以使用window["MyNamespace"]
,这是任何脚本。但是,我想隐藏Employee
给模块外的消费者,同时保持对Company
构造函数的访问权。
在C#或Java项目中,有internal
个类。 是否存在使用JavaScript构造函数模拟内部类的惯用方法?或者我应该依赖构建后步骤/捆绑+缩小工具来决定导出到全局命名空间的内容?或者我是否把事情完全混淆了?