JS中new的实现过程
new的过程:
- 1、在内存中创建一个新的对象;
- 2 、这个新对象中的[[prototype]]被赋值为传进来的构造函数中的prototype属性;
- 3、这个新对象中的this指向构造函数;
- 4、执行构造函数中的代码、
- 5、将这个新对象返回出去。
代码实现(手写代码):
function myNew(fun) {
let newObj = { //第一步:创建一个新的对象
__proto__ = fun.prototype; //第二步:将构造函数中的原型对象赋值给新对象中的[[prototype]],实现继承
}
fun.call(newObj, ...arguments); //第三步与第四步:改变this与执行构造函数,其中用扩展运算符迭代伪数组,当作参数传入。
return newObj //第五步:将这个新对象返回出去
}