我有一个命名空间: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 的私有(private)成员,这是问题所在吗?
编辑
如果你想传入对象引用,你可以这样做:
(function(module) {
function private() {}
var privateVar = 'whatever';
module.Qux = function() {
// whatever
};
module.Quux = function() {
// different whatever
};
}(Foo.Bar.Baz));
这两种方法在功能上是等效的。
关于javascript - 多个 "classes"位于同一命名空间中,但位于不同的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398382/