Javascript的3种多态

原文:https://zellwk.com/blog/polymorphism-javascript/

Javascript共有3种多态

1. 特设多态:Ad hoc polymorphism

比较特殊的一种多态,主要包括运算符重载和函数重载(最常见)

function createShape (size, shape) {
  if (shape === 'triangle') return new Triangle(/* ... */)
  if (shape === 'rectangle') return new Rectangle(/* ... */)
  if (shape === 'square') return new Square(/* ... */)
}

配合ts会有更好的效果

2. 参数多态:Parametric polymorphism

一个数组或者object可以混合多种类型的参数,一个函数可以接收多种类型的参数:

const array = ['hello', 123, true]

const doubled = [1, 2, 3].map(num => num * 2)
const toString = [1, 2, 3].map(num => `${num}`)

3. 子类型的重载:Subtype polymorphism

例如对象继承之后重载方法,这在其他面向对象编程语言中非常常见。

总结

Javascript的各种多态,平时存在感很低,因为js太灵活了,这些看起来都理所应当。

文章原始链接:https://sijie.wang/posts/polymorphism-in-javascript

本站文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请保留原始链接