new 关键字

48 阅读1分钟

1.new的过程

  • 构建一个新的对象
  • 将对象与构造函数通过原型链连接起来
  • 构造函数的this指向新的对象
  • 返回创建的对象

2.简单写个new

function myNew(Fun, ...args) {
  //1.创建一个新对象
  const obj = {};
  //2.新对象原型指向构造函数原型对象
  obj.__proto__ = Fun.prototype;
  //3.构造函数的this指向新对象
  let result = Fun.apply(obj, args);
  //4.根据返回值判断
  return result instanceof Object ? result : obj;
}