new做了哪些事?
- 创建一个空对象
- 将对象的原型__proto__指向构造函数的prototype
- 改变构造函数的this指向为当前空对象
- 如果该函数没有返回对象,则返回this
function myNew(fn, args = []) {var obj = Object.create(null)obj.__proto__ = fn.prototypevar result = fn.apply(obj, args)return typeof result === 'object' ? result : obj
}