var MyModules = (function Manager(){ // 保存方法 var modules = {}; // 传方法名,参数,方法 方法的参数由deps提供 function define(name, deps, impl) { // 将模块中的方法给deps 作为下一个函数的参数 // 由于apply需要一个数组,调用后,并将数组中的方法 // 变为实际的参数 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, }; })(); // example MyModules.define('bar', [], function() { function hello(who) { return "Let me introduce: " + who; } return { hello: hello, }; }); // 定义一个foo方法,foo方法会调用模块中之前定义的bar方法 MyModules.define('foo', ['bar'], function (bar) { var hungry = 'hippo'; function awesome() { console.log(bar.hello(hungry).toUpperCase()); } return { awesome: awesome, }; });
模块封装
var MyModules = (function Manager(){
// 保存方法
var modules = {};
// 传方法名,参数,方法 方法的参数由deps提供
function define(name, deps, impl) {...
- 发表于 2019-02-26 11:20
- 阅读 ( 191 )
- 分类:网络文章
你可能感兴趣的文章
随机文章
相关问题
条评论
请先 登录 后评论
发送私信
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!