day113-实现new运算符(1)

前言

一些实现new运算符的思路整理。



new 运算符,new关键字的操作(MDN):

  1. Creates a blank, plain JavaScript object;

    创建一个空的简单JavaScript对象(即{});

  2. Links (sets the constructor of) this object to another object;

    链接该对象(即设置该对象的构造函数)到另一个对象 ;

  3. Passes the newly created object from Step 1 as the this context;

    将步骤1新创建的对象作为this的上下文 ;

  4. Returns this if the function doesn’t return its own object.

    如果该函数没有返回对象,则返回this。

new Foo() 发生了什么?
当代码 new Foo(…) 执行时,会发生以下事情:

  1. 一个继承自 Foo.prototype 的新对象被创建。
  2. 使用指定的参数调用构造函数 Foo,并将 this 绑定到新创建的对象。new Foo 等同于 Foo(),也就是没有指定参数列表,Foo 不带任何参数调用的情况。
  3. 由构造函数返回的对象就是 new 表达式的结果。如果构造函数没有显式返回一个对象,则使用步骤1创建的对象。(一般情况下,构造函数不返回值,但是用户可以选择主动返回对象,来覆盖正常的对象创建步骤)
文章作者: lmislm
文章链接: http://lmislm.com/2019/05/05/2019-05-05/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog