我的命名空间是使用立即调用的函数表达式(IIFE)编写的。我的基本结构如下:
(function ($, MyObjectName, undefined) {
"use strict";
MyObjectName.publicFunction = function () {
privateFunction();
};
var privateFunction = function () {
document.write('hello');
};
}(jQuery, window.MyObjectName = window.MyObjectName || {}));
// 调用一个公共方法
MyObjectName.publicFunction();
现在我想通过另一个可公开访问的对象扩展此命名空间。从这里,我正在当前命名空间中执行另一个IIFE。请参见下面的代码。
(function ($, MyObjectName, undefined) {
"use strict";
var ExtendedObject = (function ($, ExtendedObject, undefined) {
"use strict";
ExtendedObject.publicFunction = function () {
privateFunction();
};
var privateFunction = function () {
document.write('<br>hello again');
};
}(jQuery, window.MyObjectName.ExtendedObject = window.MyObjectName.ExtendedObject || {}));
}(jQuery, window.MyObjectName = window.MyObjectName || {}));
// 从扩展命名空间中调用公共方法
MyObjectName.ExtendedObject.publicFunction();
这样做是“正确”的吗?如果不是,我该如何实现?