ES6(类)

2020-04-29  本文已影响0人  KATENGC
一、类的基本定义和生成实例
{
    // 基本定义和生成实例
    class Parent {
        constructor(name = 'parent') {
            this.name = name;
        }
    }

    // 创建类的实例
    let v_parent = new Parent('v');
    console.log('构造函数和实例', v_parent);
}
二、继承
{
    // 继承 通过extends关键字
    class Parent {
        constructor(name = 'parent') {
            this.name = name;
        }
    }

    class Child extends Parent {
    }

    console.log('继承', new Child());
}
三、继承传递参数

在子类中利用super(),将参数传递进去可覆盖父类中的值

{
    // 继承传递参数
    class Parent {
        constructor(name = 'parent') {
            this.name = name;
        }
    }

    class Child extends Parent {
        constructor(name = 'child') {
            //将子类的name传递进去,覆盖父类中的name
            // 注意:super要放在第一行
            super(name);
            this.type = 'child type'
        }
    }

    console.log('继承传递参数', new Child());
}
四、类的getter setter方法
{
    // getter setter
    class Parent {
        constructor(name = 'parent') {
            this.name = name;
        }

        get longName() {
            return 'mk' + this.name;
        }

        set longName(value) {
            this.name = value;
        }
    }

    let v = new Parent();
    console.log('getter', v.longName);

    v.longName = 'hello';
    console.log('setter', v.longName);
}
五、静态方法 static

静态方法:通过static修饰的方法

{
    // 静态方法 static
    class Parent {
        constructor(name = 'parent') {
            this.name = name;
        }

        static tell() {
            console.log('tell');
        }

    }

    // 静态方法 只能通过类调用,不能通过类的实例去调用
    Parent.tell();

    //以下这种写法不正确
    // let v=new Parent();
    // v.tell();
}
六、静态属性
{
    // 静态属性
    class Parent {
        constructor(name = 'parent') {
            this.name = name;
        }

        static tell() {
            console.log('tell');
        }
    }

    //直接在类上定义,通过这种方式实现静态属性
    Parent.type = 'test';
    //读取时,直接调用Parent.type
    console.log('静态属性', Parent.type);
}
上一篇下一篇

猜你喜欢

热点阅读