通过子类工厂实现简单的合成器
当 ES6 类继承另一个类,被继承的类可以是通过任意表达式创建的动态类:
// Function id() simply returns its parameterconst id = x => x;class Foo extends id(Object) {}
这个特性可以允许你实现一种合成器模式,用一个函数来将一个类 C 映射到一个新的继承了 C 的类。例如,下面的两个函数 Storage 和 Validation 是合成器:
const Storage = Sup => class extends Sup {save(database) { ··· }};const Validation = Sup => class extends Sup {validate(schema) { ··· }};
你可以使用它们去组合生成一个如下的 Employee 类:
class Person { ··· }class Employee extends Storage(Validation(Person)) { ··· }
更多信息:
- 段落: "Simple mixins"