new 和 Object.create 原理

389 阅读1分钟

new 的原理

例子:new parent()

new原理:

  1. 拿到参数(第一个参数为被new的对象,即:parent)
  2. 创建一个空对象target
  3. 把空对象target的原型链引用(__proto__)指向parent的原型(prototype)
  4. 执行parent的构造函数,并把this指向改为空对象target(目的:把parent对象上的属性/方法,挂载到target上),得到返回值result
  5. 判断result,满足条件则return result,否则return target

image.png

上图提供了两种大同小异的实现原理。(引出了后面的一个问题)

测一下

image.png

可以看出,与真正new方法效果一致。

Object.create 的原理

image.png

上面两种不同的new实现,可以得出Objcet.creat的实现原理:

image.png

MDN的解释也是比较详细的,也可以在看一看,加深理解