27、JavaScript 类与模块编程全解析

JavaScript类与模块编程全解析

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值