new的实现过程:
具体分为四步:
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或者是基本数据类型的值时,这个时候则返回新的实例对象,如果构造函数返回的值是引用类型的,则返回值是引用类型。