Seguendo il consiglio di Hevery di iniettare collaboratori nel costruttore piuttosto che cose nuove all'interno del corpo del costruttore, come farlo con grazia quando un collaboratore ha bisogno di un riferimento al suo proprietario, senza usare un metodo "init" malvagio (un'altra violazione del meglio di Hevery pratiche per il codice verificabile).
es.
export class Model {
constructor( history ) {
this._history = history; // But history needs to know Model too
history.model = this; // Is it just as simple as this? Feels awkward
...
}
...
}
vs.
export class Model {
constructor() {
this._history = new History(this); // But new'ing things here reduces testability
...
}
...
}