面向对象的优化 new关键词 构造函数 实例化对象

126 阅读2分钟

new关键词

1,  new关键词作用1
    自动 创建一个对象 并且 return 这个对象

2,  new关键词作用2
    改变 函数的this指向 指向 创建的这个对象

3,  通过操作this
    给 函数创建的对象设定属性和函数方法

重点

    new关键词创建的 
    this指向的
    return返回的
    实例化对象对应的 都是 一个对象 
    

构造函数

所谓的构造函数 是 专门创建对象 设定对象 返回对象的函数

构造函数 一般都会和 new关键词一起调用

区别 普通函数 和 构造函数

JavaScript语法规范 约定俗成 构造函数名称使用 大驼峰命名法
    所有单词的首字符大写

JavaScript语法规范 约定俗成 普通函数名称使用 小驼峰命名法
    第一个单词首字符小写 其他单词首字符大写
    

实例化对象

所谓的实例化对象 是通过构造函数创建的对象 成为 实例化对象

        // 设定的是一个函数
      function CreateObj(num1, num2) {
          // 之前是自己手动创建一个 空对象
          // 现在不用自己写了 new关键词自动创建一个空对象
          // const obj = {} ;

          // 通过操作this设定new关键词创建的对象的属性
          this.min = Math.min(num1, num2);
          this.max = Math.max(num1, num2);

          // 通过操作this设定new关键词创建的对象的函数
          this.add = function () {
              let res = 0;
              for (let i = this.min; i <= this.max; i++) { res += i };
              return res;
          }

          // 通过手动return创建的对象
          // 和new关键词一起调用 new 关键词自动return创建的对象
          // return obj;
      }

      // 直接调用空函数 函数的执行结果返回值是undefined
      const res1 = CreateObj();
      console.log( res1 );

      // 和 new 关键词一起调用 空函数
      const res1 = new CreateObj(50, 600);
      console.log(res1);


      // 和 new 关键词一起调用 空函数
      const res2 = new CreateObj(6, 70);
      console.log(res2);

函数的prototype

是每一个函数天生就有的属性

本质是一个对象 可以 存储数据和函数方法

构造函数创建的实例化对象 都可以 访问 构造函数的prototype

prototype就是一个公共的存储空间 这个构造函数创建的实例化对象 都可以访问