- new 一个构造函数的过程:
【1】创建一个空对象
【2】空对象的的隐式原型 proto 或 [[ prototype ]] 指向构造函数的显示原型 prototype
【3】将 this 指向新对象
【4】执行构造函数内部代码,给新对象添加属性
【5】返回新对象
2.手写new
javascript
funtion myNew(fn, ...args){
let obj = Object.create(fn.prototype);
let res = fn.apply(fn, args);
// 构造函数执行后,返回值如果不是是对象或函数,则返回新创建的对象
return res instanceof Object ? res: obj;
}
也有这样写的
let obj = {};
obj._proto_ = fn.prototype;
其实目的都是为了让新创建的对象的_proto_指向构造函数的原型