Javascript基础回顾之(三) js面向对象

Javascript基础回顾之(三):JS面向对象

Javascript是一种基于面向对象编程(OOP)的语言。在本文中,我们将探讨Javascript中的面向对象编程概念、如何创建和使用对象以及如何使用继承和多态等特性来构建更加灵活和可重用的代码。

面向对象编程概述

面向对象编程是一种编程范式,它将数据和函数作为一个整体封装到一个对象中,并且允许对象之间相互交互。在Javascript中,对象可以看作是属性和方法的集合。属性表示对象状态,方法表示对象所能执行的操作。

类和实例

在Javascript中,我们通过类来定义一个对象的结构。类是一个模板,它描述了实例应该具备的属性和方法。当我们创建一个类时,它并不会立即产生实际的对象。相反,在类的基础上,我们可以创建实例。实例是一个根据类定义的原型创建的对象。

以下是一个简单的类定义示例:

----- ------ -
  ----------------- ---- -
    --------- - -----
    -------- - ----
  -

  ---------- -
    --------------- ---- -- ------------- --- ----------- ----- -------
  -
-

----- --- - --- --------------- ---
--------------- -- -- ---- -- ------ --- - ----- ----

在这个示例中,我们定义了一个Animal类。该类具有nameage属性以及sayHello()方法。通过new关键字,我们创建了一个名为cat的实例,并调用了它的sayHello()方法。

继承和多态

继承是一种从已有类派生新类的机制。通过继承,子类可以继承父类的属性和方法,并可以添加新的属性和方法。Javascript使用extends关键字来实现继承。下面是一个简单的继承示例:

----- ------ -
  ----------------- ---- -
    --------- - -----
    -------- - ----
  -

  ---------- -
    --------------- ---- -- ------------- --- ----------- ----- -------
  -
-

----- --- ------- ------ -
  ----------------- ---- ------ -
    ----------- -----
    ---------- - ------
  -

  ------ -
    ------------------ --- - -----------------
  -
-

----- --- - --- ------------ -- ------- ------------
--------------- -- -- ---- -- ------ --- - ----- ----
----------- -- ----- --- - ------ ----------

在这个示例中,我们定义了一个Dog类,继承自Animal类。Dog类具有nameagebreed属性以及bark()方法。super()函数用于调用父类的构造函数。我们创建了一个名为dog的实例,并调用了它的sayHello()bark()方法。由于Dog类继承自Animal类,因此我们可以在Dog对象上调用sayHello()方法。

多态是一种允许不同的对象对相同的消息作出响应的机制。在Javascript中,多态通常是通过函数重载实现的。函数重载是指一个函数可以有不同的参数列表和返回类型。下面是一个简单的函数重载示例:

----- ------ -
  ----------------- ---- -
    --------- - -----
    -------- - ----
  -

  ---------- -
    --------------- ---- -- ------------- --- ----------- ----- -------
  -
-

----- --- ------- ------ -
  ----------------- ---- ------ -
    ----------- -----
    ---------- - ------
  -

  ------ -
    -----------------

- --------------------------------------------------------- --------
-----------------------------------------------------------------------------------