new做了哪些事?
function Parent() {
this.name = 'Person'
}
const p = new Parent()
- 创建一个空对象
- 将对象的原型__proto__指向构造函数的prototype原型对象
- 将构造函数的this指向当前对象,并执行构造函数
- 如果该函数没有返回对象,则返回当前对象
function myNew(fn, args = []) {
var obj = Object.create(null)
obj.__proto__ = fn.prototype
var result = fn.apply(obj, args)
return typeof result === 'object' ? result : obj
}