什么是面向对象编程?

面向对象程序设计(Object Oriented ProgrammingOOP)是一种计算机编程架构,也可以理解为是一种编程的思想。面向对象程序设计的核心就是对象和类,对象也是类的实例化,类是对现实对象的抽象。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。在 JavaScript 中处处皆是对象,不像其他编程语言一样,JavaScript 中是没有类的存在,只能通过一系列的方法进行模拟成类。

面向对象就是把现实世界中的事物抽象成程序世界中的类和对象,通过封装、继承、多态来演示事物事件的联系。

对象(Object)

对象的成员主要包含属性、方法。

  1. const person = {
  2. name: 'xiaoming',
  3. age: 18,
  4. eat: () => {
  5. console.log('我会吃饭');
  6. },
  7. };

类(Class)

类主要包含静态属性、静态方法、实例属性、实例方法。类的命名必须以大写字母开头。

  1. /**
  2. * 定义一个构造函数(类)
  3. */
  4. function Person() {}
  5. /**
  6. * 静态属性
  7. */
  8. Person.class = 'class1';
  9. /**
  10. * 静态方法
  11. */
  12. Person.study = function () {
  13. console.log('我在学习');
  14. };
  15. /**
  16. * 实例属性
  17. */
  18. Person.prototype.age = 18;
  19. /**
  20. * 实例方法
  21. */
  22. Person.prototype.eat = function () {
  23. console.log('我会吃饭');
  24. };
  25. /**
  26. * 通过new关键字实例化出一个xiaoming实例
  27. * xiaoming继承了Person的age实例属性和eat实例方法
  28. */
  29. const xiaoming = new Person();
  30. /**
  31. * 通过new关键字实例化出一个libai实例
  32. * libai继承了Person的age实例属性和eat实例方法
  33. */
  34. const libai = new Person();
  35. /**
  36. * 以上两个实例的成员都是独立的,互不影响
  37. */