现在的位置: 首页 > 综合 > 正文

JavaScript: How does ‘new’ work internally

2013年10月26日 ⁄ 综合 ⁄ 共 786字 ⁄ 字号 评论关闭

转自: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):

抱歉!评论已关闭.