浅谈new操作符

88 阅读1分钟

new 主要做了什么?

  • 先创建了一个新的空对象obj={}
  • 设置原型链,让这个空对象的__proto__指向函数的原型prototype
  • 让构造函数中的this指向新创建的空对象obj
  • 判断构造函数的返回值类型,如果return 出来东西是对象的话就直接返回 return 的内容,没有的话就返回创建的这个对象

自己实现 new 操作符

function create(Con, ...args) {
  let obj = {};
  obj._proto_ = Con.prototype;
  let result = Con.apply(obj, args);
  return result instanceof Object ? result : obj;
}