My namespace is written using an immediately-invoked function expression (IIFE). My basic structure looks like:
(function ($, MyObjectName, undefined) {
"use strict";
MyObjectName.publicFunction = function () {
privateFunction();
};
var privateFunction = function () {
document.write('hello');
};
}(jQuery, window.MyObjectName = window.MyObjectName || {}));
// call a public method
MyObjectName.publicFunction();
Now I want to extend this namespace with another publicly-accessible object. From here, I am executing another IIFE from within my current namespace. See below.
(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 || {}));
// call a public method from the extended namespace
MyObjectName.ExtendedObject.publicFunction();
Is the 'correct' way of doing this? If not, how can I achieve this?