function creat(fn,...args){
//1、创建控对象
var obj = {}
//2、将空对象的原型指向构造函数的原型
Object.setPrototypeOf(obj,fn.prototype)
//3、将空对象作为构造函数的上下文(改变this指向)
var result = fn.apply(obj,args)
//4、对构造函数有返回值的
return result instanceof Object ? result : obj
}
new操作符都做了什么
functioncreat是一个自定义的构造函数辅助工具,它创建一个对象,设置其原型为传入函数的原型,然后在该对象上执行传入函数,利用apply改变this的指向。如果构造函数有返回值且是对象,则返回该返回值,否则返回创建的对象。
摘要由CSDN通过智能技术生成