构造函数

97 阅读1分钟
    function createStudent(name, age) {
      // 2 通过 this 赋值
      this.name = name;
      this.age = age;
    }

    // 3 通过 new 来创建对象
    const obj = new createStudent("海海", 18);

    console.log(obj);

构造函数的工作原理:

  1. 开辟空间
  2. 将新的创建的对象对象构造函数中的this
  3. 为对象赋值
  4. 将创建好的对象的地址返回

构造函数的弊端

同一个 say 方法占据了两份内存

      this.name = name;
      this.age = age;
      this.say = function () {
        console.log(this.name);
      }
    }

    const obj = new createStudent("海海", 19);
    const obj1 = new createStudent("海海1", 19);

    console.log(obj.say === obj1.say); // false  不是同一say方法 浪费了内存

提取同一个 say 方法

  1. 解决了浪费内存的弊端
  2. 但是造成了 污染全局变量 的问题
    function say() {
      console.log(this.name);
    }
    function createStudent(name, age) {
      this.name = name;
      this.age = age;
      this.say = say
    }

    const obj = new createStudent("海海", 18);
    const obj1 = new createStudent("海海1", 19);

    console.log(obj.say === obj1.say); // true