我有一个命名空间:Foo.Bar.Baz
,其中有Qux
类。这些是使用显示模块模式定义的:
Foo.Bar.Baz = (function ($) { // the namespace/module
function Qux() { // the Qux "class" is contained in this namespace
// ...
}
Qux.prototype.doStuff = function() {
// ...
}
return { // public exports from this namespace
Qux: Qux
};
}(jQuery));
现在,在一个单独的文件中,我想将
Quux
类添加到此命名空间。我怎么做?当我使用与上述相同的模式时,它将被忽略,因为我猜一个模式会覆盖另一个模式。 最佳答案
由于已经将对象分配给Baz
,因此只需创建一个新属性:
Foo.Bar.Baz.Quux = (function() {
function private() {}
var privateVar = 'whatever';
return function() {
// access private and privateVar
};
}());
当然,Quux无法访问Qux的私有成员,这是问题吗?
编辑
如果要传递对象引用,则可以执行以下操作:
(function(module) {
function private() {}
var privateVar = 'whatever';
module.Qux = function() {
// whatever
};
module.Quux = function() {
// different whatever
};
}(Foo.Bar.Baz));
这两种方法在功能上是等效的。
关于javascript - 同一 namespace 中的多个“类”,但在单独的文件中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15398382/