轉自:http://stackoverflow.com/questions/6750880/javascript-how-does-new-work-internally
The new
operator
uses the internal [[Construct]]
method,
and it basically does the following:
- Initializes a new native object
- Sets the internal
[[Prototype]]
of
this object, pointing to the Function prototype
property.
- If the function's
prototype
property
is not an object (a primitive values, such as a Number, String, Boolean, Undefined or Null), Object.prototype
is
used instead.
- After creating the object, it calls the function, providing the object as its
this
value.
- If the return value of the called function, is a primitive, the object created internally is returned.
- Otherwise, if an object is returned, the object created internally is lost.
An equivalent implementation of what the new
operator
does, can be expressed like this (assuming that the ECMAScript 5 Object.create
method
is available):