테스트를 성공시킬 구현부를 작성하자(예제 2-20).
예제 2-20 의존성을 제공
소스 파일 2장\DI\DiContainer.js
DiContainer.prototype.register = function(name,dependencies,func) { var ix; if (typeof name !== ‘string’ | | !Array.isArray(dependencies) | | typeof func !== ‘function’) { throw new Error(this.messages.registerRequiresArgs); } for (ix=0; ix<dependencies.length; ++ix) { if (typeof dependencies[ix] !== ‘string’) { throw new Error(this.messages.registerRequiresArgs); } } this.registrations[name] = { dependencies: dependencies, func: func }; }; DiContainer.prototype.get = function(name) { var self = this, registration = this.registrations[name], dependencies = []; if (registration === undefined) { return undefined; } registration.dependencies.forEach(function(dependencyName) { var dependency = self.get(dependencyName); dependencies.push( dependency === undefined ? undefined : dependency); }); return registration.func.apply(undefined, dependencies); };