9-ES6的类

在 ES6 之前, JavaScript 没有 class.
JS 使用函数来充当实例的类, 事实上也叫构造函数. 连概念都有点乱, 但情况确实是这样.

看一个创建对象的案例:

// 定义对象类型
function Man(name) {
  // 实例的属性
  this.name = name;
}
// 实例化出一个对象
let sal = new Man('Sal');
sal.name; // 'Sal'

对象的属性会覆盖 prototype 上的同名属性, 但只在当前对象有用

new Man() 后会做以下事情:

  1. 创建了一个新对象, 这个对象继承了 Man.prototype.
  2. this 会绑定到新创建的对象上, 构造函数被调用. new Man 和 new Man() 是一样的.
  3. 构造函数返回的对象就是结果. 构造函数不显式返回一个对象,则使用步骤1创建的对象。

1、语法

9-ES6的类_第1张图片
image
    表达式
9-ES6的类_第2张图片
image

2、继承

class可以通过extends关键字实现继承。
9-ES6的类_第3张图片
image

注意事项:

子类必须在constructor方法中调用super方法,否则新建实例时会报错,这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工,**如果不调用super,子类就得不到this对象**。

补充:

如果子类有和父类一样的方法:需要加上关键字super:


![image](http://upload-images.jianshu.io/upload_images/8805811-3cce1f89fb2045fe?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

你可能感兴趣的:(9-ES6的类)