JS继承

101 阅读1分钟

原型链继承

image.png

缺点:

  • 引用类型的属性会被所有实例共享

如图,给child1中push一个“yayu”,chil2也会共享该属性

image.png

  • 在创建Child实例的时候,不能传递参数

借用构造函数

image.png

优点

  • 避免引用类型的属性被实例共享

  • 可以在Child中向Parent传递参数

如图所示

image.png

  • 缺点

方法在构造函数中定义,每次创建实例都会创建一遍方法

组合式继承

image.png

  • 融合了原型链继承和构造函数的优点。

原型式继承

image.png

  • 缺点

和原型链继承相同,引用类型数据会被实例共享

image.png 这里面修改person1的值,person2并没有改变,并不是因为person1、person2有独立的name值,而是因为person1.name = “person1”是给person1添加了一个name值,并不是修改了原型上的name值

寄生式继承

image.png

  • 缺点 和借用构造函数一样,每次创建对象都会创建一遍方法

寄生组合式继承

image.png

  • 优点

解决了组合式继承中会调用两次父构造函数的问题