I'm re-evaluating my thoughts on constructor based dependencies vs setter dependencies in JavaScript. I'm trying to see if the same reasons we avoid setter injection in static language like C# and Java still apply in JavaScript.
In other words, why is this:
var a = new A();
var b = new B();
var c = new C(a, b);
better than this:
var a = new A();
var b = new B();
var c = new C();
c.a = a;
c.b = b;
What are the reasons that you would choose constructor parameters vs setters, and why?
What other options are there for runtime composition of the c
object, so that it can correctly make use of a
and b
? When would you choose those options?
Parameterized constructors that can reject instance creation from incorrect types is probably the biggest thing I can think of.