new 关键字都执行了哪些业务?

new 关键字都执行了哪些业务?也就是有哪些步骤第一步是创建一个空对象吗?

1.创建一个空对象{ },就是在栈内新建一个obj,实际上就是对应堆内的一个地址。
2.将新建obj的隐式原型_proto_指向构造函数的原型prototype对象。
3.改变构造函数的this指向,指向新对象obj,并利用call()apply()执行构造函数。
4.返回结果,如果函数返回的是基本数据类型,则实际生成对象,返回this,如果返回的是引用数据类型,则返回该引用数据类型值。