手写一个简易的模块管理机制

95 阅读1分钟
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();

其实最根本还是闭包