yeah,well one is still using new inside the constructor.
it's pretty obvious to me that :
1/ one should read the docs before using an api
2/ capitalized functions are meant to be used as constructors.
3/ If you dont like this pattern,write builders and make them obvious. like Object.create()
To me when i design js APIs, I have 2 kind of "templates" :
the jQuery "$(o).after(b).get(0)"/underscore "_(object).method().value()" monadic api style that wraps types (like promises)
OR
The way the DOM is built,more java-ish with builders everywhere ( document.createElement ... ).
So I hardly use new anymore.
I get that people might make mistake or like Python style OO;but still, I think forcing the "new" in unecessary.
THIS will be the global scope if a function meant to be a constructor is called without new.
Try that in your console
function Foo(){this.foo = "bar";return this}
then do : Foo() ;
it will return window;so the answer is no.
Foo.call({}); Foo.call(Object.create(Foo.prototype))I wonder if any linters out there warn when they see something like:
something = SomeCapitalizedFunction()
Because forgetting to use 'new' is really the only thing I could think of that makes this pattern dangerous.