18、ES6的class。

本文介绍了ES6中使用class关键字定义类的基本语法,并对比了传统使用function定义对象的方式。此外,还详细讲解了如何利用extends关键字实现类的继承及方法重写。

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

一、class的几点特性。

ES6可以用class关键字来定义一个类。可以有下面几点特性:

  • class定义类,用constructor来定义类的构造方法。
  • new关键字创建类的实例。
  • extends关键字实现类的继承。
  • 通过super关键字调用父类的构造方法。
  • 可以重新父类的一般方法。

二、class定义的类和function定义的方法比较。

    function Person1(name,age) {
        this.name = name;
        this.age = age;
        this.showName = function () {
            console.log(this.name);
        }

    }
    let person1 = new Person1("zhangsan",23);
    console.log(person1);
    person1.showName();//打印 zhangsan

    class Person2 {
        //类的构造方法
        constructor(name,age){
            this.name = name;
            this.age = age;
        }
        //类的一般方法
        showName(){
             console.log(this.name);
        }
    }
    let person2 = new Person2("zhangsan",23);
    console.log(person2);
    person2.showName();

上面Person1、Person2 功能都是一样的。打印如下:

232026_PfLw_2601303.png

有一点不一样的是通过class定义的Person2的一般方法showName()方法是显示在原型中的。通过function定义的Person1的showName()方法是在function内部。如下所示:

231555_8mr8_2601303.png

 

三、class的继承和方法重写。

    class Person2 {
        //类的构造方法
        constructor(name,age){
            this.name = name;
            this.age = age;
        }
        //类的一般方法
        showName(){
             console.log(this.name);
        }
    }
    let person2 = new Person2("zhangsan",23);
    console.log(person2);
    person2.showName();


    class Child extends Person2 {

        constructor(name,age,sex){
            super(name,age); //调用父类的构造方法
            this.sex = sex;
        }
        //类的一般方法
        showName(){
            console.log(this.name,this.sex);
        }
    }
    let child  = new Child("lisi",23,'男');
    console.log(child);
    //如果子类不重写,调用父类的showName方法。
    //子类重新就调用子类的showName方法。
    child.showName();

如果子类不重写showName()方法,调用父类的showName()方法。子类重新就调用子类的showName方法。打印如下:

232501_8f2t_2601303.png

 

转载于:https://my.oschina.net/kunBlog/blog/1648169

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值