# 概述

《JavaScript 高级程序设计》,但要日久健忘,要查找起来很是不便。

看完了阮一峰先生写的《ES6 入门教程》

# class

ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念

# 示例

ES6 的类,完全可以看作构造函数的另一种写法。

class Point {
  // ...
}
typeof Point // "function"
Point === Point.prototype.constructor // true

ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到

class B {
  // ...
}
B.prototype.hello = function () {}
const b = new B()
b.constructor === B.prototype.constructor // true
b.hello // function

constructor 可省略不写, 默认返回实例对象(即this),完全可以指定返回另外一个对象。

# Class 表达式

# 与 ES5 的行为不一致。

  1. class 声明的类中定义的方法是不可枚举的。
class Point {
  hello() {
    // ...
  }
}
Object.keys(Point.prototype) // []
  1. 类必须使用new调用,否则会报错
class Point {
  // ...
}
Point()/
// TypeError: Class constructor Foo cannot be invoked without 'new'