• js---es5和es6实现面对对象继承


    一.es5

    构造函数相当于类

    父类的属性通过构造函数this对象进行初始化,父类的方法通过在prototype原型对象上挂载,供所有的实例对象使用,减少内存浪费

    子类继承父类的属性通过call方法借调父类的构造函数进行父类属性继承,子类特有的属性同样通过this来初始化,子类继承父类的方法通过...展开运算符对父类prototype原型对象进行浅拷贝,子类特有的方法同样通过子类的prototype原型对象上挂载方法,供所有实例对象使用。

    案例:

    1. //父类
    2. function Father(name, age) {
    3. // 父类的属性
    4. this.name = name
    5. this.age = age
    6. }
    7. //父类的方法
    8. Father.prototype.say = function () {
    9. console.log(this.name + '会说话');
    10. }
    11. // 子类
    12. function Son(name, age, school) {
    13. //继承父类的属性
    14. Father.call(this, name, age)
    15. //子类自己的属性
    16. this.school = school
    17. }
    18. //子类继承父类的方法
    19. Son.prototype = { ...Father.prototype }//浅拷贝
    20. Son.prototype.constructor = Son
    21. //子类自己的方法
    22. Son.prototype.toSchool = function () {
    23. console.log(`${this.name}去${this.school}学校`);
    24. }
    25. const son = new Son('h', 21, 'gxkj')
    26. //父类方法
    27. son.say()
    28. // 自己的方法
    29. son.toSchool()

    二、es6

    通过class关键字声明类

    父类的属性初始化在constructor构造器中进行初始化,方法直接书写在类中

    子类的属性在constructor构造器中进行初始化,继承父类的属性通过在子类的constructor构造器中

    通过super函数调用父类的构造器,自己特有的属性通过this进行初始化,子类自动会继承父类的方法,自己特有的方法直接书写在子类中

    1. //父类
    2. class Father {
    3. //父类构造器中进行实例对象属性的初始化
    4. constructor(name, age) {
    5. // 父类的属性
    6. this.name = name
    7. this.age = age
    8. }
    9. //父类的方法
    10. say() {
    11. console.log(this.name + '会说话');
    12. }
    13. }
    14. // 子类
    15. class Son extends Father {
    16. //子类构造器中进行实例对象属性的初始化
    17. constructor(name, age, school) {
    18. // 继承父类的属性
    19. super(name, age)
    20. // 子类自己的属性
    21. this.school = school
    22. }
    23. //父类方法自动继承
    24. //子类自己的方法
    25. toSchool() {
    26. console.log(`${this.name}${this.school}学校`);
    27. }
    28. }
    29. //测试
    30. const son = new Son('h', 21, 'gxkj')
    31. //父类方法
    32. son.say()
    33. // 自己的方法
    34. son.toSchool()

  • 相关阅读:
    【零基础算法】链表算法
    09-进程和计划任务管理
    使用目标之间的先验关系提升目标检测器性能
    【数据结构——单链表】本篇文章通过图文结合的方式能让你轻松的掌握单链表
    《docker基础篇》1.Docker简介,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
    deque(双端数组)——STL
    Flutter高仿微信-第53篇-群聊-删除并退出
    CUDA学习笔记6——事件计时
    springboot集成Redis
    LINQPad Premium 7.5.14 Crack
  • 原文地址:https://blog.csdn.net/h18377528386/article/details/126866857