new操作符的实现原理
const ObjectFactory = (...args)=>{
let obj = {}
let Constructor = [].shift.call(args)
obj.__proto__ = Constructor.prototype
let ret = Constructor.apply(obj,args);
return typeof ret === 'object' ? ret : obj
}
function Person(options) {
this.name = options.name,
this.age = options.age
// return {
// name:'张三',
// age:18
// }
}
let p = ObjectFactory(Person,{name:'王五',age:36})
console.log(p);