摘自《你不知道的js》這本書,第五章第五節:現代模組機制。
感覺這個很牛很高大上,但是不能完全看懂,抄下來,慢慢品讀理解:
var MyModules = ( function Manager(){ 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 get(){ return modules[name]; } return { define, get } } )()
下面是這個模組的應用:
MyModules.define('bar',[],function(){ function hello(who){ return "Let me introduce:" + who; } return { hello: hello } }); MyModules.define('foo',['bar'],function (bar) { var hungry = 'hippo'; function awesome() { console.log(bar.hello(hungry).toUpperCase()); } return { awesome: awesome } }) var bar = MyModules.get('bar'); var foo = MyModules.get('foo'); console.log( bar.hello('hippo') ); foo.awesome();