Reputation: 42454
which of the following are valid object constructors?
1) var m = function(){}
2) m = function(){}
3) m.prototype.constructor = function(){}
Upvotes: 3
Views: 210
Reputation: 4457
They all appear to be valid statements that declare an empty function, and assign it to different variables.
Every function in Javascript is both an object itself (or f.prototype wouldn't work) and a potential object constructor. Any function may be called with the new Thingy
syntax (or perhaps new m
in your example). Or it could be called normally - the only special thing new
does is set this
to an object derived from f.prototype.
A newly created function has a prototype
property that contains a newly minted object ({}
), which has no properties except a hidden constructor
property pointing at the function (it's a circular reference, actually)
It should be true that:
var m = function(){};
m.prototype.constructor == m;
Upvotes: 1
Reputation: 3334
1) var m = function(){}
2) m = function(){}
Are almost same except the first one creates a local scoped function, the second - global. And in order to create an object you can just
var obj = new m();
Upvotes: 0