new的作用是将一个构造函数实例化
简单的过程分为:
- 创建一个新对象
- 将新对象的__proto__指向构造函数的prototype
- 将构造函数的this指向该对象
- 返回新对象
简单的实现:
function _new (fn, ...args) {
const o = {}
o.__proto__ = fn.prototype
fn.apply(o, args)
return o
}
function User(name, age) {
this.name = name;
this.age= age
}
_new(User, 'name', 2)