ES6学习笔记之Class
Learning Card
- Class的用法
class
关键字来定义- 内部有
constructor
方法 - 类的方法直接在内部写
- Class的继承
extends
关键字表示继承- 构造器内子类
super
父类的属性
Class
的用法
JavaScript和传统的面向对象语言在生成实例对象的方法上有很大差异。在JavaScript创建对象的文章里可以看到,JavaScript有很多种实现创建对象的方法,最常用的是组合构造函数方式与原型方式。
1 | function User(name, pass) { |
ES6提出了一种更接近传统语言的写法,并且引入了Class
(类)这个概念,作为对象的模板。
1 | class User { |
事实上,ES6的类并不是真正的类,而是一个语法糖,但总体来说,它的写法还是方便了很多。
Class
的特征:
class
关键字来定义类(类后面不用跟参数)- 类内部有
constructor
方法,即构造器,它来定义类的属性 - 类的方法直接在内部写,不用加
prototype
注意点:
- 类的方法直接写成函数名+
()
,不用加function
关键字 - 方法和属性之间不用
,
为类添加多个方法
当需要给一个类添加多个方法的时候,我们可以把每个方法都分别添加到User.prototype
上,但是这样比较麻烦,这里可以用到我们前面在对象的扩展里提到的Object.assign
方法
1 | Object.assign(User.prototyper, { |
Class
的继承
相比起类本身,在ES6中,类的继承的写法更为优雅。我们接着上面的例子来:
1 | //ES5写法 |
ES5需要通过call
方法来将VipUser
的this
指向User
,再添加自己的属性。同样让VipUser
的原型指向User
,同时让构造器还是指向自己。
1 | //ES6写法 |
Class
继承的特征:
- 子类
extends
父类 - 构造器内,
super
需要继承父类的属性