底层原理之实现一个new操作符

137 阅读1分钟

在JavaScript中new做了什么?

创建了一个空的JavaScript对象。

设置对象的构造函数。

将步骤一新建的对象作为this的上下文。

如果函数没有返回对象,则返回this。


下面是实现代码


function create(Con, ...args){ 

 // 创建一个空的对象 

 this.obj = {}; 

 // 将空对象指向构造函数的原型链

 Object.setPrototypeOf(this.obj, Con.prototype); 

 // obj绑定到构造函数上,便可以访问构造函数中的属性,即this.obj.Con(args) 

 let result = Con.apply(this.obj, args);

 // 如果返回的result是一个对象则返回 

 // new方法失效,否则返回

obj return result instanceof Object ? result : this.obj;

 }