new 和 Object.create 原理

new 的原理

例子:new parent()函数

new原理:this

  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

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

测一下

image.png

能够看出,与真正new方法效果一致。code

Object.create 的原理

image.png

上面两种不一样的new实现,能够得出Objcet.creat的实现原理:cdn

image.png

MDN的解释也是比较详细的,也能够在看一看,加深理解对象

相关文章
相关标签/搜索