1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 依赖注入原理通俗的说就是当一个函数需要某些对象的时候,这个函数只需要指明自己需要的对象,就会有一个容器 将这些对象自动传递给这个函数,在angularjs中的具体表现比如说我们定义了一个service, 就可以在控制器中将这个 service作为参数使用。
实现一个简答的依赖注入需要一个注册函数来作为依赖的注册,可以利用一个对象来实现注册依赖 的保存。 一个注入函数来实现注入,注册函数很好处理,只需要将依赖的名字和对应的函数保存在依赖对象即可, 而注入函数显然 需要的参数是一个声明依赖的数组,一个逻辑函数,对这个依赖数组遍历查看是否注册, 使用hasOwnProperty是比较好的方法, 如果没有注册则放弃,注册了就将他push到一个数组中,最后返回一个function, 这个function只需要使用apply方法将数组 作为参数传递给注入函数中的函数参数即可实现。
如何实现注入函数忽略参数传递的顺序?
可以利用正则去解析注册函数的参数,将注入函数中函数参数的参数解析出来,然后逐个去依赖中查询即可, 这会带来的问题就是如果 压缩的话,这些参数会被一些简单的字母代替, 也就意味着失效,angularjs的解决方式使用数组作为参数, 数组最后一个就是依赖注入的函数 ,当然这得保持依的顺序。
|