以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - 前端面试问题
17. JavaScript的 `new` 到底做了些什么?

new 是一个运算符,用于创建并返回一个新对象,它主要做了以下几件事情:

  1. 创建一个新对象。

  2. 将新对象的原型指向构造函数的原型对象。

  3. 执行构造函数,并将该新对象绑定为构造函数中的 this 上下文。

  4. 如果构造函数没有自己返回一个对象,则返回第一步创建的新对象。

具体步骤可以简单概括为:

function myNew(constructor, ...args) {
  const obj = Object.create(constructor.prototype); // 创建一个新对象,并将其原型指向构造函数的原型对象
  const result = constructor.apply(obj, args); // 执行构造函数,并绑定this指向新对象
  return result instanceof Object ? result : obj; // 如果构造函数返回了一个对象,则返回该对象,否则返回新对象
}