随着 JavaScript 的不断发展,它的语言特性愈发趋于复杂。不过,这也并不意味着我们只能被其束缚,相反,我们可以借助新技术提升我们的开发效率。本篇文章将深入讨论 ES12 中的分类重写,探讨如何利用这个新特性增强多态性。
什么是分类重写?
分类重写通常指的是对类的某个方法进行重写。在 ES6 中,我们可以利用 class
关键字创建一个类,并定义其中的方法,例如:
----- ------ - ------- - ------------------- -------- - -
如果我们需要继承这个类,并对其中定义的 sound
方法进行重写,可以这样写:
----- --- ------- ------ - ------- - -------------------- - -
这样就完成了方法重写,当我们实例化 Cat
并调用 sound
方法时,会输出 meow
。
ES12 中的分类重写
ES12 中,分类重写的语法有了一些更新。我们可以使用 super.method()
的方式来调用被重写的方法,并且,这种方式支持在方法前面加入一些修饰符,从而达到增强多态性的效果。
下面是一个示例,我们将使用分类重写来完成一个原型继承的例子。假设我们有一个 Person
类,它有一个 say
方法:
----- ------ - ----- - -------------- -- - --------- - -
现在,我们需要使用这个类创建出一个新的类 Student
,并对其中的 say
方法进行重写。让我们来看看传统的继承方式:
----- ------- ------- ------ - ----- - ------------ -------------- -- - ---------- - -
上面的代码中,我们使用 super.say()
来调用 Person
类中的 say
方法,然后在其后面输出了 I am a student
。当我们通过 Student
类创建出的实例调用 say
方法时,会输出:
- -- - ------ - -- - -------
这样做的确可以实现方法重写,但如果我们希望扩展这个类,比如增加一个 Teacher
类,它继承自 Person
类,也需要重写 say
方法,但是输出内容不同,这时候就需要使用分类重写。
分类重写的语法如下:
----- ------- ------- ------ - ----- - -------------- -- - ---------- - ------------------------ -- ------------ -- --------------- -
上面的代码中,我们使用了 say:Person.prototype.say
的语法,将 Teacher
类中的 say
属性指向了 Person
类的原型中的 say
方法。这样就可以在调用 super.say()
方法时,调用 Person
类中的 say
方法,而不是 Teacher
类中的 say
方法。这种方式可以在不破坏继承关系的情况下,增强多态性,让代码更加灵活。
指导意义
分类重写是一种在 ES12 中的新特性,它通过更加灵活的继承方式,增强了多态性。掌握分类重写的技巧可以让你编写更加灵活、易于扩展的代码。当你需要对一个类的方法进行重写时,建议使用分类重写,这样可以更好地保持原有的继承关系,同时又可以创建出不同的效果。
结论
ES12 中的分类重写,是一种新的方式来重写类中的方法。通过 super.method()
的方式调用被重写的方法,并支持在方法前面加入一些修饰符,从而达到增强多态性的效果。分类重写可以让代码更加灵活易于扩展,是一个值得掌握的技巧。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6736f8c3317fbffedf07235f