https://blog.csdn.net/cc18868876837/article/details/103149502

    new操作符用于创建一个给定构造函数的对象实例

    1. function Person(name, age){
    2. this.name = name;
    3. this.age = age;
    4. }
    5. const person1 = new Person('Tom', 20)
    6. console.log(person1) // Person {name: "Tom", age: 20}

    image.png

      1. 创建一个空对象obj({}),在栈内存,堆内存开辟空间;
      1. 将obj的[[prototype]]属性指向构造函数constrc的原型(即obj.[[prototype]] = constrc.prototype)。
      1. 将构造函数constrc内部的this绑定到新建的对象obj,执行constrc(也就是跟调用普通函数一样,只是此时函数的this为新创建的对象obj而已,就好像执行obj.constrc()一样);
      1. 若构造函数没有返回非原始值(即不是引用类型的值),则返回该新建的对象obj(默认会添加return this)。否则,返回引用类型的值。