一. new一个对象的过程
- 创建一个新的对象
- 将新对象的原型指向构造函数的原型
- 构造函数被执行,将执行过程中的this绑定在实例对象
- 返回该实例对象
二. 自己实现简单的new
function Father(name) {
this.name = name
}
function newobj(func, arg) {
// 1. 创建一个新的对象
const obj = {}
// 2. 将新对象的原型指向构造函数的原型
Object.setPrototypeOf(obj, func.prototype) // setPrototypeOf()设置指定对象的原型
// 3. 构造函数被执行,将执行过程中的this绑定在实例对象
func.call(obj,arg)
// 4. 返回该实例对象
return obj
}
const son = newobj(Father,"z")
console.log(son);