js中的继承

本文围绕JavaScript的继承展开,介绍了多种继承方式。包括继承extends,利于代码优化;原型继承,利用原型链规则;借用构造函数继承,改变this指向;组合继承,结合前两者优点;ES6 class继承,对组合继承封装成标准语法。还阐述了各方式的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承 extends

  • 就是同类之间的继承,有利于代码优化,减少代码量
  • 继承是和构造函数相关的一个应用(同类两个构造函数之间的继承)
  • 是指,让一个构造函数去继承另一个构造函数的属性和方法

原型继承

  • 利用原型链的规则,去继承一些属性和方法(利用了把子类的原型对象赋值为父类实例化对象)
    • 不会影响到父类的原型对象,也不会影响其他父类的实例化对象的使用
    • 构造函数体内的属性和方法还有原型上的属性和方法都可以继承
    • 需要在两个地方进行传递参数
  • 属性
    • prototype 原型对象
    • –proto-- 隐式原型
    • constructor 构造器
      在这里插入图片描述

借用构造函数继承

  • 借用构造函数继承,利用了改变构造函数的this指向
    • 只需要在一个地方进行传参
    • 不能继承父类的方法
  • 优点:
    • 继承来的属性是在自己身上,我们一个实例化过程在一个位置传递参数
  • 缺点
    • 只能继承父类结构函数体内的内容
    • 父类方法不能继承
      在这里插入图片描述

组合继承

  • 就是把 原型继承借用构造函数继承两个方式组合在一起
  • 优点
    • 父类构造函数体内和原型上的内容都能继承(方法和属性都能继承)
    • 继承下来的属性放在自己身上
    • 在一个位置传递所有的参数
  • 缺点
    • 当你给子类添加方法的时候,实际上是添加在父类的实例身上

ES6 class继承

  • 其实就是对组合继承进行封装,变成了一个标准语法让咱们使用
    • extends
    • super()
<script>
        class Father{
            constructor(name, age){
                this.name = name
                this.age = age
            }
            money(){
                console.log('一个小目标!')
            }
        }
        class Son extends Father{
            constructor(name, age, sex){
                super(name, age)
                this.sex = sex
            }
        }
        let s1 = new Son('张三', 18, '男')
        console.log(s1)
        s1.money()
        
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值