window.MM = (() => { // 单例模式
let m = {}; // 闭包使其词法作用域保留
function def(name, deps, func) {
for (let i = 0; i < deps.length; i++) {
deps[i] = m[deps[i]]
}
m[name] = func.apply(func, deps)
}
function get(name) {
return m[name]
}
return {
def,
get
}
})()
用法:
MM.def('man', [], () => {
function intro() {
console.log('im a man')
}
return {
intro
}
})
MM.def('boy', ['man'], (man) => {
function say() {
man.intro()
console.log(12313132)
}
return {
say
}
})
var aboy=MM.get('boy')
aboy.say();
其实最根本还是闭包