new 的原理
例子:new parent()
new
原理:
- 拿到参数(第一个参数为被
new
的对象,即:parent) - 创建一个空对象
target
- 把空对象
target
的原型链引用(__proto__
)指向parent
的原型(prototype
) - 执行
parent
的构造函数,并把this
指向改为空对象target
(目的:把parent
对象上的属性/方法,挂载到target
上),得到返回值result
- 判断
result
,满足条件则return result
,否则return target
上图提供了两种大同小异的实现原理。(引出了后面的一个问题)
测一下
可以看出,与真正new
方法效果一致。
Object.create 的原理
上面两种不同的new
实现,可以得出Objcet.creat
的实现原理:
MDN的解释也是比较详细的,也可以在看一看,加深理解