new一个构造函数的过程

  1. 创建一个新对象
  2. 将新对象分配给this
  3. 执行函数代码
  4. 返回新对象

判断是否是new调用

函数内部判断 new.target 是否存在

构造器的return

  1. 有return,返回的是对象,则返回
  2. 有return,返回的不是对象,则返回构造过程创建的对象(过程的第1步)