执行过程
核心:原型链、this、返回
- 创建一个空对象obj
- 建立构造函数与对象间的关系 == 原型链
- 将构造函数中的this绑定到新建的obj上 = 明确this指向
- 将构造函数返回类型作判断,如果原始值被忽略,如果返回对象,需要正常处理
手写new
function mynew(constructor, ...args) {
//创建一个对象
const obj = {}
//对象的原型与构造函数的prototype相关联
obj.__proto__ = constructor.prototype
//this指向新创建的this
let result = constructor.apply(obj, args)
//返回新创建的对象
return result instanceof Object ? result : obj
}