new操作符的实现原理

70 阅读1分钟

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);