样本一
new 共经过了 4 几个阶段
- 1、创建一个空对象
- 2、设置原型链
- 3、让 Func 中的 this 指向 obj,并执行 Func 的函数体
- 4、判断 Func 的返回值类型:
样本二
function Test(){}
const test = new Test()
- 创建一个新对象:
const obj = {}
- 设置新对象的 constructor 属性为构造函数的名称,设置新对象的proto属性指向构造函数的 prototype 对象
obj.constructor = Test
obj.__proto__ = Test.prototype
- 使用新对象调用函数,函数中的 this 被指向新实例对象
Test.call(obj)
- 将初始化完毕的新对象地址,保存到等号左边的变量中