En JavaScript, la inyección de dependencias se puede lograr de varias formas. A continuación se muestra un sencillo ejemplo de cómo se podría hacer mediante un “constructor” o una “función fábrica”.
Constructor Injection:
```javascript
class Foo {
constructor(bar) {
this._bar = bar;
}
class Bar {
doSomethingElse() {
console.log(‘Bar hizo algo’);
}
}
const myBar = new Bar();
const myFoo = new Foo(myBar);
```
En este caso, la clase `Foo` es dependiente de una instancia de la clase `Bar`. Por lo tanto, en lugar de crear `Bar` dentro de `Foo`, lo creamos fuera y lo pasamos (inyectamos) a `Foo` al instanciarlo.
Factory Function Injection:
```javascript
function createFoo(bar) {
return {
doSomething: function() {
bar.doSomethingElse();
}
};
}
const myBar = {
doSomethingElse: function() {
console.log(‘Bar hizo algo’);
}
};
const myFoo = createFoo(myBar);
```
En este caso, la function `createFoo` es una “función fábrica” que crea y devuelve un objeto. Esta función toma `bar` como parámetro y lo usa dentro del método `doSomething` del objeto que crea.
Estos ejemplos son maneras bastante simples de lograr la inyección de dependencias en JavaScript. En un proyecto más grande o más complejo, es posible que desees usar un framework o una biblioteca que pueda manejar la inyección de dependencias para ti, como Angular, que tiene un sistema de inyección de dependencias incorporado.