面向对象
class 语法拥有面向对象的概念,封装、继承和多态,同时可以使用接口达到类型组合的效果 class 应当具有原子性,不应当尝试从 class 中解构方法为一个函数,不应当从 class 中解构一个 getter 为一个函数 由于js中 this 的不确定性,减少 class 语法的使用,除非你确定要封装一个具有原子性的数据实体
closure 通过函数临时生成一个平对象或者高阶函数,能够将 scope 中的数据向外共享,从而达到简单的数据封装的目的 使用 closure 是函数一等公民的语言的买点,它允许用户快速创建并封装一个简单的数据结构,它具有比 class 更少的功能和更轻量的特点, 但是,闭包创建的对象是一个平对象,它每次调用都会重复地创建闭包函数,相较于 class 的方法,只会在原型对象上创建一次