随着 JavaScript 的不断发展,ES11 (2020) 中引入了一些新的类特性,其中涉及到继承和多态。这些特性可以让我们更好地组织和管理代码,并帮助我们实现更灵活的功能。在本文中,我将会详细介绍这些特性,并附加一些示例代码。
什么是继承?
继承是一种在已有类的基础上创建新类的机制。在继承中,新类会继承某些属性和方法。这些属性和方法称为基类或父类,新类称为派生类或子类。
在 ES11 中,我们可以通过 extends
关键字来创建子类。例如:
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - ------- - ------------------------- ----- - --------- - - ----- --- ------- ------ - ------- - ------------------------- --------- - - --- - - --- -------------- ---------- -- ------- ------ ------
在上面的代码中,我们定义了一个名为 Animal
的基类和一个名为 Dog
的派生类。Dog
类继承了 Animal
类的属性和方法。
在 Dog
类中,我们覆盖了 speak
方法,并在控制台输出了一条不同于基类的消息。当我们调用 d.speak()
时,输出的消息为 "Mitzie barks."
。
什么是多态?
多态是一种在不同的子类中使用同一方法名的能力。这意味着,尽管函数签名相同,但实际调用的是对应于不同的子类的适当实现。
在 ES11 中,我们可以使用多态的特性来实现“在某一环节可以拦截所有消息”这样的设计模式。例如:
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - ------- - ------------------------- ----- - --------- - - ----- --- ------- ------ - ------- - ------------------------- --------- - - ----- --- ------- ------ - ------- - ------------------------- --------- - - --- ------ - ---- -------------- --- --------------- ----------------------- -- - --------------- ---
在上面的代码中,我们定义了一个名为 Animal
的基类,并且定义了两个不同的子类:Dog
和 Cat
。每个子类都实现了 speak()
方法,但它们的实现是不同的。
在代码的后面部分,我们将两个不同的子类实例化到同一个数组中,并对每个实例调用 speak()
方法。输出结果分别为 "Mitzie barks."
和 "Fluffy meows."
。
在这个例子中,多态的特性允许我们使用相同的方法名调用不同的实现。这使得代码更加简洁和易于维护。
总结
ES11 中添加了一些新的类特性,特别是继承和多态。这些特性可以使我们更有效地编写代码,并帮助我们实现更灵活的功能。本文提供了一些使用示例,希望能够帮助你更好地理解这些特性。
在实践中使用继承和多态是一个强有力的工具,但也需要谨慎使用,以避免造成额外的复杂性。要牢记的最重要的一点是,在所有情况下,尽量保持代码简洁易读。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f81925f6b2d6eab303c707