define定义模块函数的实现

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
28
29
30
31
32
33
34
35
36
37
38
39
40
var Amd = (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(name) {
return modules[name];
}
return {
define:define,
get: get,
}
})();
Amd.define('a', [], function(){
function sayName(who) {
return 'Hello ' + who;
}
return {
sayName,
};
});
Amd.define('b', ['a'], function(a) {
var name = 'test';
function sayInfo() {
console.log(a.sayName(name));
}
return {
sayInfo,
}
})
var b = Amd.get('b');
b.sayInfo();