面向对象

95 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第3天

  • 首先,我们要明确,面向对象不是语法,是一个思想,是一种 编程模式

  • 面向: 面(脸),向(朝着)

  • 面向过程: 脸朝着过程 =》 关注着过程的编程模式

  • 面向对象: 脸朝着对象 =》 关注着对象的编程模式

  • 实现一个效果

    • 在面向过程的时候,我们要关注每一个元素,每一个元素之间的关系,顺序,。。。
    • 在面向过程的时候,我们要关注的就是找到一个对象来帮我做这个事情,我等待结果
  • 例子 🌰: 我要吃面条

    • 面向过程

      • 用多少面粉
      • 用多少水
      • 怎么和面
      • 怎么切面条
      • 做开水
      • 煮面
      • 吃面
    • 面向对象

      • 找到一个面馆
      • 叫一碗面
      • 等着吃
    • 面向对象就是对面向过程的封装

  • 我们以前的编程思想是,每一个功能,都按照需求一步一步的逐步完成

  • 我们以后的编程思想是,每一个功能,都先创造一个 面馆,这个 面馆 能帮我们作出一个 面(完成这个功能的对象) ,然后用 面馆 创造出一个 ,我们只要等到结果就好了

创建对象的方式

  • 因为面向对象就是一个找到对象的过程
  • 所以我们先要了解如何创建一个对象

调用系统内置的构造函数创建对象

  • js 给我们内置了一个 Object 构造函数

  • 这个构造函数就是用来创造对象的

  • 当 构造函数 和 new 关键字连用的时候,就可以为我们创造出一个对象

  • 因为 js 是一个动态的语言,那么我们就可以动态的向对象中添加成员了

    // 就能得到一个空对象
    var o1 = new Object() 
    ​
    // 正常操作对象
    o1.name = 'Jack'
    o1.age = 18
    o1.gender = '男'
    

字面量的方式创建一个对象

  • 直接使用字面量的形式,也就是直接写 {}

  • 可以在写的时候就添加好成员,也可以动态的添加

    // 字面量方式创建对象
    var o1 = {
      name: 'Jack',
      age: 18,
      gender: '男'
    }
    ​
    // 再来一个
    var o2 = {}
    o2.name = 'Rose'
    o2.age = 20
    o2.gender = '女'
    

使用工厂函数的方式创建对象

  • 先书写一个工厂函数

  • 这个工厂函数里面可以创造出一个对象,并且给对象添加一些属性,还能把对象返回

  • 使用这个工厂函数创造对象

    // 1. 先创建一个工厂函数
    function createObj() {
      // 手动创建一个对象
      var obj = new Object()
    ​
      // 手动的向对象中添加成员
      obj.name = 'Jack'
      obj.age = 18
      obj.gender = '男'
    ​
      // 手动返回一个对象
      return obj
    }
    ​
    // 2. 使用这个工厂函数创建对象
    var o1 = createObj()
    var o2 = createObj()
    

使用自定义构造函数创建对象

  • 工厂函数需要经历三个步骤

    • 手动创建对象
    • 手动添加成员
    • 手动返回对象
  • 构造函数会比工厂函数简单一下

    • 自动创建对象
    • 手动添加成员
    • 自动返回对象
  • 先书写一个构造函数

  • 在构造函数内向对象添加一些成员

  • 使用这个构造函数创造一个对象(和 new 连用)

  • 构造函数可以创建对象,并且创建一个带有属性和方法的对象

  • 面向对象就是要想办法找到一个有属性和方法的对象

  • 面向对象就是我们自己制造 构造函数 的过程

    // 1. 先创造一个构造函数
    function Person(name, gender) {
      this.age = 18
      this.name = name
      this.gender = gender
    }
    ​
    // 2. 使用构造函数创建对象
    var p1 = new Person('Jack', 'man')
    var p2 = new Person('Rose', 'woman')
    

    \