ES6 Class类的继承

引用菜鸟教程的一句话

在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类。

class 的本质是 function。

它可以看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法

下面我们来看示例

1.我们首先去新建一个父类 Person,有三个属性值,分别是 name,age,like,有一个方法getMsg

class Person {
        // 构造函数,必选
        constructor({
            name,
            age,
            like
        }) {
            this.name = name;
            this.age = age;
            this.like = like;
        }
        // 原型中的方法
        getMsg() {
            console.log(`${this.name}今年${this.age}了,${this.like?'喜欢':'不喜欢'}打游戏`)
        }
    }
    let p1 = new Person({
        name: "小红",
        age: 14,
        like: false
    });
    console.log(p1);
    p1.getMsg();

而后我们new了一个对象p1,我们可以在控制上打印打印p1是什么,如下图

我们可以看到,p1中包含了三个属性值,在原型上挂载了一个getMsg的方法,所以我们p1.getMsg()直接调用,并得到了 小红今年14了,不喜欢打游戏的结果

2.新建子类Woman并且去继承父类Person,woman中有三个属性,其中name,age 继承于Person,weight则是自己的独有属性值,有一个sing方法,getPersonMsg的方法

    class Woman extends Person {
        constructor({
            name,
            age,
            weight
        }) {
            super({
                name,
                age
            })
            this.weight = weight;
        }
        sing() {
            console.log(`${this.name}今年${this.age}岁,体重${this.weight}斤,爱好唱歌`)
        }
        getPersonMsg() {
            // 调用父类的方法
            super.getMsg()
        }
    }
    let p3 = new Woman({
        name: "小兰",
        weight: 90,
        age: "20"
    })
    console.log(p3);
    p3.sing()
    p3.getPersonMsg()
    p3.getMsg()

下面我们来打印下p3中都包含什么,下图

其中比较注意的是,我们在p3去调用getMsg(),会先去自身的原型上去找此方法,结果当然是找不到,因为p3中只有sing,getPerson两个方法,于是它就顺着原型链继续找,直到找到或者找不到为止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jay丶萧邦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值