new做了那些事
- 创建了一个新的对象
- 把this指向这个新创建的对象
- 执行函数里面的方法(例如设置属性和方法)
- 返回这个对象
构造函数
- 构造函数里面如果返回了一个对象,new 执行的时候则以返回的这个对象为准
- 当构造函数执行结果不是一个对象的时候,就返回的新创建的对象,新对象继承了构造函数的原型对象
一步一步的操作
const resultObj = myNew(Fn)
function myNew(Fn, ...args) {
const obj = Object.create(fn.prototype);
const result = Fn.apply(obj, args)
return typeof result === 'object' ? result : obj // 如果 执行结果是一个对象,那么就返回执行结果 否则返回新建对象
}
很有意思的题目
https://juejin.cn/post/6911320761349193736