手写new操作符

35 阅读1分钟
function myNew(Func, ...args) {
    // 1. 创建新对象
    const obj = {};

    // 2. 新对象原型指向构造函数的原型对象
    obj.__proto__ = Func.prototype;

    // 3. 将构造函数的this指向新对象
    let result = Func.apply(obj, args);

    // 4. 根据返回值判断
    return result instanceof Object ? result : obj;
}