20176-Simple-Modules 发表于 2017-10-22 | 前言 这篇文字简单的实现了define方法,了解闭包的使用场景. Demo 123456789101112131415161718192021222324252627var 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对象。