javaScript: new关键字的执行过程

2,721 阅读1分钟

new的实现过程:

微信图片_20210528132147.png

具体分为四步:

1:创建一个空对象object,let obj = {},创建对象新对象,就是在栈内新建了一个obj,这个obj实际上是指的堆中对应的一个地址;

2:这是原型链,这里所说的原型链,就是设置新建对象obj的饮食原型即__proto__属性指向构造函数objectFactory的原型prototype对象,即
obj.proto = objectFactory.prototype

3:改变构造函数objectFactory的this绑定到新对象obj,并且利用call()或者是apply()来执行构造函数objectFactory;

4:将第三步重初始化完成后的对象地址,保存到新对象中,同时要判断构造函数objectFactory的返回值类型,为什么要判断返回值类型呢?因为如果构造函数中返回this或者是基本数据类型的值时,这个时候则返回新的实例对象,如果构造函数返回的值是引用类型的,则返回值是引用类型。