function _new(fn, ...args) {
/*
1. 创建一个空对象
2. 对象的原型指向原型对象,就是fn构造函数的prototype
3. 执行构造函数里的代码
4. 返回这个对象
*/
let obj = Object.create({})
obj.__proto__ = fn.prototype
let res = fn.call(obj, ...args)
return res && (typeof res === 'function' || typeof res === 'object') ? res : obj
}
function Person(name, age) {
this.name = name;
this.age = age;
// return
}
let who = _new(Person, 'zoey', 30)
console.log(who)
手写实现new
于 2022-02-07 18:49:10 首次发布