js 继承

2020-02-26  本文已影响0人  前端又又

1.构造继承

核心:在子类的内部调用父类,通过call改变父类中this的指向

              等于是复制父类的实例属性给子类

特点:

       创建子类实例时,可以向父类传递参数

       可以实现多继承

       可以方便的继承父类型的属性,但是无法继承原型中的方法

 缺点:

     实例并不是父类的实例,只是子类的实例

    无法继承原型中的方法

   无法实现函数复用,每个子类都有父类实例函数的副本,影响性能

2.原型链继承

核心:将父类的实例作为子类的原型

特点:

       子类的实例也是父类的实例

       可以方便的基础父类型的原型中的方法,但是属性的继承无意义

    缺点:      

         只执行一次,无法给属性传值

         属性的继承无意义

3.组合继承(原型链继承以及构造继承)

核心:结合了两种模式的优点,传参和复用

特点:1、可以继承父类原型上的属性,可以传参,可复用。

   2、每个新实例引入的构造函数属性是私有的。

缺点:调用了两次父类构造函数(耗内存),子类的构造函数会代替原型上的那个父类构造函数。

上一篇 下一篇

猜你喜欢

热点阅读