在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;
}