依赖注入
依赖注入
function DI(deps) {
this.deps = deps
}
DI.prototype.inject = function (func) {
// 取参数名
var self = this
var args = /^[^(]+\(([^)]+)/.exec(func.toString())
args = args ? args[1].split(',').map(function (arg) {
return self.deps[arg.trim()]
}) : []
return function () {
return func.apply(self, args)
}
}
// demo
var deps = {
dep1: function () { return 'dep1' },
dep2: function () { return 'dep2' },
dep3: function () { return 'dep3' },
}
var di = new DI(deps)
var myFunc = di.inject(function (dep2, dep1, dep3) {
return [dep1(), dep2(), dep3()]
})柯里化
防抖和节流
防抖
节流
深拷贝
继承
Last updated