I know this is not the recommended way of doing it, but if I declare the following functions, and then invoke them as constructors, what will be the difference (if any) betw
I'd say the most important thing would be the prototype of the returned objects.
function Something() {
this.foo = "bar";
}
Something.prototype = {
// Something prototype code
hello: function(){
//...
}
}
function something2() {
var that = {};
that.foo = "bar";
return that;
}
something2.prototype = {
// something2 prototype code
greetings : function() {
//...
}
}
var x = new Something();
var y = new something2();
var z = something2();
typeof x.hello === function // should be true
typeof y.greetings === undefined // should be true
typeof z.greetings === undefined // should be true
In other words, I'd say you're not instantiating objects withe something2, you are creating purely new objects that inherit from Object.
new something2 is inefficient, because you are creating a blank scope, from which you create a new object
var that = {};
which is equivalent to
var that = new Object();