AngularJS中自动解析依赖项背后的魔力是什么?
angular
.module('app', [])
.service('appService',
function appService (firstService, secondService, thirdService) { }
如何自动注入 firstService,secondService,thirdService ?
答案 0 :(得分:1)
JavaScript自动依赖注入基于Function.prototype.toString()方法,该方法以函数声明的形式返回对象的字符串表示形式。
使用正则表达式解析返回的字符串以查找函数参数,并返回其名称,用于查找,实例化和注入实际服务。
(function appService (firstService,secondService,thirdService) {})
.toString()
.match(/^function\s*[^\(]*\(\s*([^\)]*)\)/m)[1]
.split(',')
// => ["firstService", "secondService", "thirdService"]