面向对象程序设计(OOP:Object Oriented Programming)是一种编程思想,它是以对象数据类型为导向的一种编程思想。

JS/JAVA/PHP/C#/Ruby/Python/C++..

面向过程是以过程为中心的编程思想

C

面向过程

  1. 开始游戏

  2. 红方先动

  3. 重新绘制图盘

  4. 判断胜负

  5. 黑方再动

  6. 重新绘制图盘

  7. 判断胜负

  8. 重复

面向对象

  • 做一个棋盘的控制系统

  • 用户走棋是一个系统

  • 判断胜负是另一个系统

面向对象的特点:

  • 封装

  • 继承

  • 多态

[封装]
把实现一个功能的 JS 代码进行封装,主要目的,低耦合高内聚

[多态]
重载:方法名相同,参数的个数或者类型不同,此时名字相同的方法叫做方法的重载(后台语言中的重载),JS 中没有重载,如果需要重载,可以通过检测参数来实现模拟重载
重写:子类重写父类的方法

[继承]
子类继承父类的属性和方法

  1. 原型继承

  2. call 继承

  3. 寄生组合继承

  4. ES6 class 类实现继承

面向对象

面向对象编程,需要掌握 对象、类、实例 的概念

  • 对象:万物皆对象

  • 类:对象的具体细分

  • 实例:类中的一个具体事物(拿出类别中的具体一个实例进行研究,那么当前类别下的其他实例也具备这些特点和特征)

整个 JS 就是基于面向对象设计和开发出来的语言,我们学习和实战的时候也要按照面向对象的思想区体会和理解

内置类

Object:对象类(基类)

  • 数据类型 Number、String、Boolean、Null、Undefined、Array、RegExp、Function…

  • 元素集合 HTMLCollection

  • 事件目标 EventTarget

    • Node

      • Element

        • HTMLElement

          • HTMLBodyElement

          • HTMLDivElement

          • …每一个 HTML 标签都有一个自己所属的类

    • WindowProperties
      - Window

  • 节点集合 NodeList