JavaScript 是一门基于原型的语言,而不是类。在 JavaScript 中,对象可以通过关联其他对象来实现继承。
原型链
当一个对象被用作另一个对象的原型时,这个对象就成为了原型对象。每个对象都有一个原型对象,除了 Object.prototype
,它没有原型。
当我们访问一个对象的属性时,如果该对象本身没有这个属性,那么 JavaScript 就会沿着原型链向上查找,直到找到该属性或者最终到达 Object.prototype
。
以下是一个简单的例子:
-- -------------------- ---- ------- -- -------- -------- ------------ - --------- - ----- - -- - ------ ---------- ------------------------ - ---------- - --------------- ---- -- - - ----------- - -- ---- ------ -- --- ------ - --- -------------- -- -- ------- -- ----------------- -- -- --- ---- -- ---- -- -- --------------------- ------ --- --------------- - ------------------------------ -- -- ------- ------ ---- ---------------- --------------------------- --- ------------------ -- ---- ------- -- ------------------------------------- -- -- --- ---- -- ----
继承
通过将一个对象设置为另一个对象的原型,我们可以实现继承。这种方式被称为原型继承。以下是一个简单的例子:
-- -------------------- ---- ------- -- ---- ------ ---- -------- ------------ - --------- - ----- - -- - ------ ---------- ------------------------ - ---------- - --------------- ---- -- - - ----------- - -- ---- --- ---- -------- --------- ------ - --------- - ----- ---------- - ------ - -- - ------ ----- --- --- ------------- - --- --------- -- - --- ---------- ------------------ - ---------- - --------------------- - -- ---- --- -- --- --- - --- ------------ --------- -- -- ------- -- -------------- -- -- --- ---- -- ------ -- -- ---- -- ----------- -- -- -------
在这个例子中,我们将 Cat.prototype
设置为 new Animal()
,这意味着 Cat.prototype
继承了 Animal.prototype
。现在,Cat.prototype
上有两个方法:sayName
和 meow
。
ES6 中的类和继承
在 ES6 中,JavaScript 引入了一种新的语法糖,使得我们可以更方便地实现类和继承。以下是一个简单的例子:
-- -------------------- ---- ------- -- ---- ------ - ----- ------ - ----------------- - --------- - ----- - --------- - --------------- ---- -- --------------- - - -- ---- --- ----- ------ ----- --- ------- ------ - ----------------- ------ - ------------ ---------- - ------ - ------ - --------------------- - - -- ---- --- -- ----- --- - --- ------------ --------- -- -- ------- -- -------------- -- -- --- ---- -- ------ -- -- ---- -- ----------- -- -- -------
在这个例子中,我们使用了 class
关键字来定义 Animal
和 Cat
类。Cat
类继承自 Animal
类,并且通过 super
关键字调用了父类的构造函数。我们还可以在子类中定义新的方法,例如 meow
。
总结
JavaScript 的原型继承机制是其最强大、最独特的功能之一。了解原型链和原型继承机制对于理解 JavaScript 中的继承非
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/11924