new的原理
chenpeng 2020-11-30 JS API
- 在内存中创建一个空对象
- 给这个空对象添加属性和方法(将该对象的原型指向构造函数的原型)
- 将构造函数的 this 指向为创建的新对象,并将参数传入
- 如果构造函数没有返回对象,则返回第一步创建的对象;如果构造函数有返回对象,则 this 指向构造函数返回的对象
实现原理如下:
function newObject(parent, ...args){
let child = {}
Object.setPrototypeOf(child, parent.prototype)
let res = parent.apply(child, args)
return typeof res === 'object' ? res : child
}
1
2
3
4
5
6
2
3
4
5
6