JavaScript 类与模块编程全解析
1. 委托代替继承
在 JavaScript 中, extends 关键字能轻松创建子类,但这并不意味着要大量创建子类。当想编写一个与其他类共享行为的类时,有两种选择:一是创建子类来继承行为;二是让类创建另一个类的实例,并根据需要委托给该实例,这种方式更简单灵活,被称为“组合”,即“优先使用组合而非继承”。
例如,要创建一个 Histogram 类,它的行为类似于 JavaScript 的 Set 类,但要记录每个值被添加的次数。由于 Histogram 类的 API 与 Set 类似,可能会考虑继承 Set 并添加 count() 方法。但实现 count() 方法时会发现, Histogram 类更像 Map ,因为它需要维护值和添加次数的映射。所以,可以创建一个定义了类似 Set API 的类,并通过委托给内部的 Map 对象来实现这些方法。
以下是 Histogram 类的实现代码:
/**
* A Set-like class that keeps track of how many times a value has
* been added. Cal
JavaScript类与模块编程全解析
超级会员免费看
订阅专栏 解锁全文
3048

被折叠的 条评论
为什么被折叠?



