手写模拟new的函数

function objectFactory(...args) {
    //创建实例对象
    let obj = {}
    //构造函数取第一个参数
    let constructor = args.shift()
    //实例对象的__proto__属性与构造函数的prototype相同
    obj.__proto__ = constructor.prototype
    //将构造函数的this指向实例对象,如果有返回结果,保存
    let ret = constructor.apply(obj, args)
    //返回结果(如果有的话)或者实例对象obj
    return typeof ret === 'object' ? ret : obj
}

function Person(name) {
    this.name = name
}

let p = objectFactory(Person, 'xiaoming')
原文地址:https://www.cnblogs.com/lianglanlan/p/14415964.html