new操作符
约 173 字小于 1 分钟
2025-03-14
提问
new操作符 具体做了什么?- 如果实现
new?
new 操作符
- 首先创建了一个空对象
- 设置原型,将对象的原型指向函数的原型
- 让函数的
this指向这个对象的原型,并执行构造函数的代码 - 判断函数的返回值类型,如果是值类型,返回创建的对象,如果是引用类型,返回这个引用类型的对象。
实现
function newFactory(constructor, ...args) {
if (typeof constructor !== "function") {
throw new Error("constructor must be a function");
}
const object = Object.create(constructor.prototype);
const result = constructor.apply(object, args);
if (
result &&
(typeof result === "object" || typeof result === "function")
) {
return result;
} else {
return object;
}
}