為了驗證閉包的學習,有必要實現一個簡單的依賴加載器。
代碼實現
var myModules=(function () {
//保存所有定義的模塊
var modules={};
/**
*定義新模塊,接收3個參數
*name:模塊名
*deps:模塊依賴的其他模塊
*impl:模塊的定義
**/
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 (name) {
return modules[name];
}
//暴露api
return {
define: define,
get: get
}
})()
使用
myModules.define('bar',[],function () {
function hello (who) {
//代碼體
}
return {
hello:hello
}
})
myModules.define('foo',['bar'],function (bar) {
functin hello2 () {
//代碼體
}
return {
hello2:hello2
}
})
var bar=myModules.get('bar');
var foo=myModules.get('foo');
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。