关于 New 操作符的原理

142 阅读1分钟
function _new (fn, ...args) {
    // Object.create(fn.prototype)
    // 返回一个对象,且这个对象的 __proto__ = fn.prototype
    // 创建对象
    const obj = Object.create(fn.prototype)
    // 执行构造函数,并更改this指向
    const res = fn.apply(obj, args)
    // 返回结果
    return typeof res === 'object' ? res : obj
}