博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js实现依赖注入
阅读量:7000 次
发布时间:2019-06-27

本文共 847 字,大约阅读时间需要 2 分钟。

hot3.png

 

function a(){
  console.log("a");
}
function b () {
  console.log("b");
}
function c () {
  console.log("c");
}
var injector = {
  dependencies: {},
  register: function(key, value) {
     this.dependencies[key] = value;
  },
  resolve: function(deps, func, scope) {
     var func, deps, scope, args = [], self = this;
     func = arguments[0];
     deps = func.toString().match(/^function\s*[^\(]*\(\s*([^\)]*)\)/m)[1].replace(/\s/g, '').split(',');
     scope = arguments[1] || {};
     return function() {
        var a = Array.prototype.slice.call(arguments, 0);
        for(var i=0; i<deps.length; i++) {
           var d = deps[i];
           args.push(self.dependencies[d] && d != '' ? self.dependencies[d] : a.shift());
        }
        func.apply(scope || {}, args);
     }
  }
}
injector.register("a", a);
injector.register("b", b);
injector.resolve(function (b, a, c) {
  a();
  b();
  c();
})(c);

转载于:https://my.oschina.net/u/1992917/blog/536406

你可能感兴趣的文章
IOS 实现界面本地化(国际化)
查看>>
陶哲轩实分析命题 11.10.7
查看>>
《陶哲轩实分析》引理17.2.4证明_导数的唯一性
查看>>
站立会议5
查看>>
python中的常用模块(2)
查看>>
登陆的键盘敲击事件
查看>>
执行计划基础 统计信息
查看>>
python MD5加密方法
查看>>
mysql连接jdbc查询代码
查看>>
SpringMVC10数据验证
查看>>
处理异常Error resolving template [/login], template might not exist or might not be accessible by......
查看>>
洛谷 P1147 连续自然数和 Label:等差数列
查看>>
线程间的同步和通信机制
查看>>
Python脚本实现值更新事件赋值过程记录日志监控
查看>>
[bzoj 1503][NOI 2004]郁闷的出纳员
查看>>
Java课程上机实验1_ConnectionManager
查看>>
node.js中通过dgram数据报模块创建UDP服务器和客户端
查看>>
FZU Tic-Tac-Toe -.- FZU邀请赛 FZU 2283
查看>>
外痔田螺用法
查看>>
异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值...
查看>>