JS中依赖注入的几种实现方式

依赖注入与控制反转控制反转(Inversion of Control)是一种思想依赖注入(Dependency injection)是一种设计模式依赖注入的实现其实依赖注入原理很简单,就两点:实现一个服务池解析依赖项,并将对应的服务传入需要它的函数服务池简单,可以直接用对象模拟。 class Injector { constructor() { this.dependencies = {}; } register...

删除DOM节点后该节点的事件处理程序还在吗?

一个DOM被删除并不会直接释放对应的event listener,如果删除的DOM元素是无引用的(没有指向它的引用),那么元素本身以及与之关联的任何事件处理程序/侦听器会被由垃圾收集器回收。var a = document.createElement('div'); var b = document.createElement('p'); // Add event listeners to b etc... a.appendChild(b); a.removeChild(b); b = n...

Promise 版本的数组遍历

我们想要对数组中的值分别进行异步操作,但是数组对象的遍历方法只支持同步方法,如果传入异步函数后其结果往往超出预期,所以我们就要自己来实现这些遍历方法的异步版本。这里指的遍历方法包括:map、reduce、reduceRight、forEach、filter、some、every。我们的需求有三种:串行,并行,当其中一个Promise完成或拒绝后退出。这里我们以一个简单的异步函数为例:let multi = num => { return new Promise((resolve,...