-
调用new的过程中发生四件事
function myNew(constr, ...args){ // 1、创建一个空对象obj, // 2、将obj的[[prototype]]属性指向构造函数的原型对象,即:obj.__proto__ = construcor.prototype const obj = Object.create(constr.prototype) // 3、将构造函数内部的this指向新创建的对象obj,并执行 const result = constr.apply(obj, args) // 4、如果构造函数返回的是对象,则返回构造函数返回的结果,否则返回新创建的对象 return result instanceof Object ? result: obj }