20176-Simple-Modules

前言


这篇文字简单的实现了define方法,了解闭包的使用场景.

Demo


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var MyModuler = (function() {
var modules = {};
function define(name, deps, fact) {
for (var i=0; i<deps.length; i++) {
deps[i] = modules[deps[i]];
}
modules[name] = fact.apply(fact, deps);
}
function get(name) {
return modules[name];
}
return {define: define, get: get};
}());
// 定义
MyModuler.define('first', [], function () {
return {
'name': 'first name'
};
})

MyModuler.define('second', ['first'], function (First) {
return {
'name': First.name + ' brother'
};
});
// 调用
console.log(MyModuler.get('second').name);

小结

很像前端进化史中近代模块化开发的require吧,核心是通过闭包缓存了modules对象。