1、概述
在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类。
class 的本质是 function。
它可以看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。
2、基础用法
1、类定义
// 匿名类 let Example = class { constructor(a) { this.a = a; } } // 命名类 let Example = class Example { constructor(a) { this.a = a; } }
2、类声明
class Example { constructor(a) { this.a = a; } }
注意:
类定义不会被提升,这意味着,必须在访问前对类进行定义,否则就会报错。
类中方法不需要 function 关键字。
方法间不能加分号。
3、类的主体
1、属性:
ES6 中,prototype 仍旧存在,虽然可以直接自类中定义方法,但是其实方法还是定义在 prototype 上的。 覆盖方法 / 初始化时添加方法。
Example.prototype={ //methods }
2、静态属性:
class 本身的属性,即直接定义在类内部的属性( Class.propname ),不需要实例化。 ES6 中规定,Class 内部只有静态方法,没有静态属性。
3、公共属性:
class Example{} Example.prototype.a = 2;
4、实例属性:定义在实例对象( this )上的属性。
5、name属性:就是class的名称,返回跟在 class 后的类名(存在时)。
4、方法:
1、constructor方法(构造方法):创建类的实例化对象时被调用。
class Example{ constructor(){ console.log('我是constructor'); } } new Example(); // 我是constructor
2、静态方法:函数前缀为static。
3、原型方法:无前缀的函数。
4、实例方法:在constructor方法中调用的方法。
4、类的实例化
1、class 的实例化必须通过 new 关键字。
2、decrator: decorator 是一个函数,用来修改类的行为,在代码编译时产生作用。
5、封装与继承 getter和setter