1.new的过程
- 构建一个新的对象
- 将对象与构造函数通过原型链连接起来
- 构造函数的this指向新的对象
- 返回创建的对象
2.简单写个new
function myNew(Fun, ...args) {
//1.创建一个新对象
const obj = {};
//2.新对象原型指向构造函数原型对象
obj.__proto__ = Fun.prototype;
//3.构造函数的this指向新对象
let result = Fun.apply(obj, args);
//4.根据返回值判断
return result instanceof Object ? result : obj;
}