手写 myNew:模拟 new 操作符的完整实现

1. 定义一个对象X

2. 将该对象X的隐式原型 绑定到 传入函数的 原型上

3. 改变传入函数 this 指向执行传入对象,并接受返回结果

4. 如果结果是对象,那么就返回这个对象;否则返回对象X

function myNew (func, ...args) {
    const obj = {};
    obj.__proto__ = func.prototype;
    let res = func.apply(obj, args);
    return res instanceof Object ? res : obj;
}

来源整理自:vue3js.cn 面试官系列