欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ES6 Class类

程序员文章站 2022-03-20 11:38:08
...

定义
在ES6中,class本质上就是function。

类声明

类声明的方式有两种,如下

  • 匿名类

    let obj = class{
    	constructor(name){
    		this.name = name;
    	}
    }
    
  • 命名类

    let obj = class Example {
    	constructor(name){
    		this.name = name;
    	}
    }
    

注意要点:

  • constructor 方法是类的默认方法,创建类的实例化对象时被调用。constructor 方法用于定义初始化类的参数
  • 类不可以重复声明
  • 类定义不会被提升,必须在访问前对类进行定义,否则就会报错。
  • 类中方法不需要 function 关键字,方法之间不需要逗号隔开。

类的实例化

  • new
    class 的实例化必须通过 new 关键字。如下图
    ES6 Class类

注意要点:

  • class 实例化的相同对象都是共享同一个原型对象。如下图
    ES6 Class类

封装与继承

  • extends
    class 类通过 extends 实现类的继承。

    class Child extends Father { 
    	//属性/方法
    }
    

    注意要点:

    • 子类 constructor 方法中必须有 super,且必须出现在 this 之前。
    • 调用父类构造函数,只能出现在子类的构造函数。
    • super 在普通方法中,指向父类的原型对象。在静态方法中,指向父类。
    • 常规对象不可以被继承,但可以使用 Object.setPrototypeOf() 解决。
  • getter / setter
    在 class 中使用 getter / setter 进行属性的封装,如下图
    ES6 Class类
    注意要点:

    • getter 不可单独出现。
    • getter 与 setter 必须同级出现,或者全部放在子类中。
    • 在 getter / setter 中使用 this.a 赋值或者取值则会一直递归调用,直至报错。
相关标签: es6