JS new一个对象的过程
1.创建空对象
2.新对象执行prototype连接原型
3.绑定this到新对象上
4.执行构造函数
5.返回新对象
代码如下:
// new 一个对象的过程
function myNew() {
// 1.创建一个空对象
let obj = {}
// 2.取出参数中的第一个参数,获得构造函数
let constructor = [].shift.call(arguments)
// 3.连接原型
obj._proto_ = constructor.prototype
// 4.执行构造函数,即绑定 this,并且为这个新对象添加属性
let res = constructor.apply(obj, arguments)
// 5.返回新对象
return typeof res === 'object' ? res : obj
}
function People(name, age) {
this.name = name
this.age = age
}
const xiaozhang = myNew(People, 'xiaozhang', 19)
console.log(xiaozhang.name) // xiaozhang
console.log(xiaozhang.age) // 19