31 lines
587 B
JavaScript
31 lines
587 B
JavaScript
|
/*
|
||
|
* Original concept and code by Magnus Tovslid:
|
||
|
* https://medium.com/@magnusjt/ioc-container-in-nodejs-e7aea8a89600
|
||
|
*/
|
||
|
class Container
|
||
|
{
|
||
|
constructor()
|
||
|
{
|
||
|
this.services = {};
|
||
|
}
|
||
|
|
||
|
register(name, factory)
|
||
|
{
|
||
|
Object.defineProperty(this, name, {
|
||
|
get: () =>
|
||
|
{
|
||
|
if(!this.services.hasOwnProperty(name))
|
||
|
this.services[name] = factory(this);
|
||
|
|
||
|
return this.services[name];
|
||
|
},
|
||
|
configurable: true,
|
||
|
enumerable: true
|
||
|
});
|
||
|
|
||
|
return this;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
module.exports = Container;
|