Short Answer
The constructor returns the this
object.
function Car() {
this.num_wheels = 4;
}
// car = { num_wheels:4 };
var car = new Car();
Long Answer
By the Javascript spec, when a function is invoked with new
, Javascript creates a new object, then sets the “constructor” property of that object to the function invoked, and finally assigns that object to the name this
. You then have access to the this
object from the body of the function.
Once the function body is executed, Javascript will return:
ANY object if the type of the returned value is object
:
function Car(){
this.num_wheels = 4;
return { num_wheels:37 };
}
var car = new Car();
alert(car.num_wheels); // 37
The this
object if the function has no return
statement OR if the function returns a value of a type other than object
:
function Car() {
this.num_wheels = 4;
return 'VROOM';
}
var car = new Car();
alert(car.num_wheels); // 4
alert(Car()); // No 'new', so the alert will show 'VROOM'