new运算符
1、在构造函数前加上new,会创建出一个空对象
2、将新对象的proto指向构造函数的prototype
3、将构造函数中的this指向新对象,执行构造函数中的语句去修饰这个新对象
4、如果构造函数return一个引用类型,那么返回该引用类型,如果return一个基本数据类型或者没有return,那么返回我们新创建的对象。
function myNew(Fun, ...args) {
const obj = {};
obj.__proto__ = Fun.prototype;
let result = Fun.apply(obj, args);
return result instanceof Object ? result : obj;
}