手写模拟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')