var Modules = (function ModulesManager() {
var modules = {};
function define(name,deps,impl) {
for (var i = 0; i < deps.length; i++) {
deps[i] = modules[deps[i]];
}
modules[name] = impl.apply(impl,deps);
}
function getModule(name) {
return modules[name];
}
return {
define: define,
getModule: getModule
};
})();
Modules.define('m1',[],function f1() {
function hello(argument) {
return "hello"+argument;
}
return {
hello:hello
};
})
Modules.define('m3',[],function f1() {
function ff(argument) {
return "ff"+argument;
}
return {
ff:ff
};
})
Modules.define('m2',['m1','m3'],function f2(argument,ff) {
debugger;
function awesome() {
console.log(argument)
console.log(argument.hello("finit"))
console.log(ff.ff("finit"))
}
return {
awesome:awesome
};
})
var m2 = Modules.getModule('m2');
m2.awesome();
IIFE(立即执行函数表达式)在此有应用,将需要执行的函数放在第二位,示例代码如下:
(function iife(fn){
fn(window);
})(function def(global){
......
);