function sea(name){
this.name=name
}
function mineNew(f,...ags){//...ags可能会不只有一个参数
const o={}//定义一个空对象,可能会作为结果返回
o.__proto__=f.prototype//把新创建的对象的指向改变
const r = f.apply(o,ags)//将新创建的对象作为参数传进来
const isTrue = r&&typeof r==='function'||typeof r ==='object'//判断是否存在r
return isTrue?r:o
}
const c= new sea("明明")
const c = mineNew(sea,"明明")
console.log(c)
直接对外new了一个对象
具体过程:创建一个空对象,关联构造函数的原型 ,将this指向空对象并且执行,判断构造函数有没有返回对象,有的话返回构造函数返回的对象,没有就返回定义的对象