Javascript

.js中的继承

本文主要是介绍.js中的继承,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • JS继承实现⽅式也很多,主要分ES5和ES6继承的实现

  • ES5继承:

    • ES5实现继承主要是基于prototype来实现的,具体有三种⽅法

      • 原型链继承:即 B.prototype=new A()

      •  

      •  寄生组合继承

      • 特点:

             1.最完美的js继承解决方案

            2.父类私有的属性和方法,成为子类实例私有的属性和方法

              3.父类公有的属性和方法,成为子类实例公有的属性和方法

      • 结合原型链继承和call继承的方法,同时自己创建一个对象,并且让这个对象的原型指向父类构造函数的prototype.实现寄生组合继承

      •  

      • 组合继承是结合原型链继承和借用构造函数继承

      • 特点:

            (call继承)

              1.子类实例可以使用父类私有的属性和方法

              2.父类私有的属性和方法都会变成子类实例私有的属性和方法

         (原型链继承)

               3.子类实例可以通过原型链访问和使用父类公有的属性和方法

               4.子类的原型链上会存在一份多余的父类的私有属性和方法

      •  

  • call继承(借用构造函数继承)

        //在子类构造函数中把父类构造函数当作普通的函数执行, 并且通过call方法把父类构造函数中的this替换成子类的实例(this), 这样相当于给子类实例设置了私有的属性和方法

         特点:

        1.只能继承父类私有的属性和方法(因为只是把父类构造函数当作普通函数执行了一次,跟父类的原型上的方法和属性没有任何关系)

         2.父类的私有的属性和方法 都会变成子类私有的属性和方法

        3.⽤class关键字定义类,⽤extends关键字继承类,⽤super()表示⽗类
  • ES6继承
  • ES6 class继承

        通过extends来实现继承

        class 子类 extends 父类

        在constructor中要使用super()

        特点

           1.父类私有的属性和方法 会变成子类私有的属性和方法

           2.父类公有属性和方法 会变成子类公有的属性和方法

  •  

 

 

通过extends 实现原型链继承

        如果不写constructor,不会报错 继承会正常实现

        如果不写constructor, 浏览器会自动的帮我们去创建一些代码

 

 

     

这篇关于.js中的继承的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!