现代模块机制
摘自《你不知道的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();