var MyModules = (function Manager(){ // 保存方法 var modules = {}; // 傳方法名,參數,方法 方法的參數由deps提供 function define(name, deps, impl) { // 將模塊中的方法給deps 作為下一個函數的... ...
var MyModules = (function Manager(){ // 保存方法 var modules = {}; // 傳方法名,參數,方法 方法的參數由deps提供 function define(name, deps, impl) { // 將模塊中的方法給deps 作為下一個函數的參數 // 由於apply需要一個數組,調用後,並將數組中的方法 // 變為實際的參數 for(var i = 0; i < deps.length; i++) { deps[i] = modules[deps[i]]; } // 實際定義方法 modules[name] = impl.apply(impl, deps); } // 獲取方法 function get(name) { return modules[name]; } return { define: define, get: get, }; })(); // example MyModules.define('bar', [], function() { function hello(who) { return "Let me introduce: " + who; } return { hello: hello, }; }); // 定義一個foo方法,foo方法會調用模塊中之前定義的bar方法 MyModules.define('foo', ['bar'], function (bar) { var hungry = 'hippo'; function awesome() { console.log(bar.hello(hungry).toUpperCase()); } return { awesome: awesome, }; });