JavaScript的继承

JavaScript 是一门基于原型的语言,而不是类。在 JavaScript 中,对象可以通过关联其他对象来实现继承。

原型链

当一个对象被用作另一个对象的原型时,这个对象就成为了原型对象。每个对象都有一个原型对象,除了 Object.prototype,它没有原型。

当我们访问一个对象的属性时,如果该对象本身没有这个属性,那么 JavaScript 就会沿着原型链向上查找,直到找到该属性或者最终到达 Object.prototype

以下是一个简单的例子:

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

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

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

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

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

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

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

继承

通过将一个对象设置为另一个对象的原型,我们可以实现继承。这种方式被称为原型继承。以下是一个简单的例子:

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

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

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

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

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

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

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

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

在这个例子中,我们将 Cat.prototype 设置为 new Animal(),这意味着 Cat.prototype 继承了 Animal.prototype。现在,Cat.prototype 上有两个方法:sayNamemeow

ES6 中的类和继承

在 ES6 中,JavaScript 引入了一种新的语法糖,使得我们可以更方便地实现类和继承。以下是一个简单的例子:

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

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

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

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

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

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

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

在这个例子中,我们使用了 class 关键字来定义 AnimalCat 类。Cat 类继承自 Animal 类,并且通过 super 关键字调用了父类的构造函数。我们还可以在子类中定义新的方法,例如 meow

总结

JavaScript 的原型继承机制是其最强大、最独特的功能之一。了解原型链和原型继承机制对于理解 JavaScript 中的继承非

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/11924