手动实现new
- 先创建一个空对象
- 将空对象的__proto__=函数的prototype
- 通过call方法显式将函数的this指向空对象
- 返回空对象
function myNew (fun, ...rest) {
const obj = {}
obj.__proto__ = fun.prototype
fun.call(obj, ...rest)
return obj
}
function fn (name, age) {
this.name = name
this.age = age
}
const obj = myNew(fn, '赵云波', '18')
console.log(obj)