namespaced IIFE
by jmjpro
HTML
Open the console to see the output
<div id="hello">World</div>
JavaScript
//globals
dependency2 = 'dep2';
dependency3 = 'dep3';
dependency4 = 'dep4';
// define a namespaced IIFE
com = typeof com === 'undefined' ? {} : com;
com.domain = typeof com.domain === 'undefined' ? {} : com.domain;
com.domain.module = typeof com.domain.module === 'undefined' ? {} : com.domain.module;
com.domain.module.MyClass = function( libraries ) {
return libraries( jQuery || Zepto, dependency2, dependency3, dependency4 );
}(function($, dependency2, dependency3, dependency4 ) {
function MyClass() {
console.log('dependency2 => ' + dependency2);
console.log('dependency3 => ' + dependency3);
console.log('dependency4 => ' + dependency4);
}
MyClass.prototype.myJQueryDependentMethod = function(param) {
$(function() {
console.log('called myMethod with param' + param);
console.log('Hello ' + $('#hello').text());
});
};
return new MyClass(jQuery);
});
// use namespaced IIFE
com.domain.module.MyClass.myJQueryDependentMethod('some param');