以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - 前端面试问题
17. JavaScript的 `new` 到底做了些什么?
new
是一个运算符,用于创建并返回一个新对象,它主要做了以下几件事情:
-
创建一个新对象。
-
将新对象的原型指向构造函数的原型对象。
-
执行构造函数,并将该新对象绑定为构造函数中的
this
上下文。 -
如果构造函数没有自己返回一个对象,则返回第一步创建的新对象。
具体步骤可以简单概括为:
function myNew(constructor, ...args) {
const obj = Object.create(constructor.prototype); // 创建一个新对象,并将其原型指向构造函数的原型对象
const result = constructor.apply(obj, args); // 执行构造函数,并绑定this指向新对象
return result instanceof Object ? result : obj; // 如果构造函数返回了一个对象,则返回该对象,否则返回新对象
}