一、多态的含义

不同数据类型进行同一个操作,表现出不同的行为,就是多态的体现

二、传统意义的多态

  1. function Shape{
  2. getArea(){}
  3. }
  4. function Circle extends Shape{
  5. getArea(){
  6. return 100
  7. }
  8. }
  9. function Rectangle extends Shape{
  10. getArea(){
  11. return 1000
  12. }
  13. }
  14. function calcArea(shape:Shape){
  15. return shape.getArea()
  16. }
  17. const r = new Rectangle()
  18. const c = new Circle()
  19. calcArea(r)
  20. calcArea(c)

传统意义的多态有三要素:

  1. 继承是前提
  2. 子类要对父类的方法进行重写
  3. 父类的引用指向子类实例

三、js中的多态

  1. function sum(m,n){
  2. return m+n
  3. }
  4. sum(10,20)
  5. sum("abc","cba")

上述的代码是符合多态的定义的

所以js中是有多态的,但和传统的多态不一样,因为它很灵活,所以可以传入不同的数据类型执行同一个方法。