var factories = { } ; var FactoryContainer = function (){ this.register = function (factory){ if (factories.hasOwnProperty(factory.KEY)) { return this.getType(factory.KEY); } else { factories[factory.KEY] = { add: factory.add, make: factory.make} ; return factory; } } ; this.getType = function (key){ return factories[key]; } ; this.load = function (dest, isFactory){ for (var factory in factories){ if (factories.hasOwnProperty(factory)) { dest[factory] = (isFactory)? factories[factory].add: factories[factory].make; } } return dest; } ; return this; } ; module.exports = FactoryContainer();