<-Home
new 操作符的内部流程及实现
使用new 调用类的构造函数会执行如下的操作:
- 在内存中创建一个对象;
- 这个对象内部的[[Protoptype]]指针被赋值为构造函数的prototype(原型)属性;
- 构造函数的内部的this被指向这个对象;
- 执行构造函数内部代码(给这个对象添加属性和值)
- 如果执行的结果返回的一个非空对象,则返回执行结果;否则返回这个对象
function newOperation(Constructor, ...args) {
// const instance = Object.create(Constructor.prototype); // 设置[[Prototype]]的方式之一
const instance = {};
// instance.__proto__ = Constructor.prototype; // 设置[[Prototype]]的方式之一
Object.setPrototypeOf(instance, Constructor.prototype);
const result = Constructor.call(instance, ...args);
return result instanceof Object ? result : instance;
}