Mixin 类到底 Mix 了啥?
Mixin 是一个类,不单独使用,被用于混(Mix)入(in)到已有的类中,提供额外的方法。
为什么引入 Mixin 类?我认为其原因是我们要用一个已有的类,但是已有的类中又缺少一些方法,我们又不想去过多修改已有的类。怎么办? 定义一个 Mixin 类,把它混到已有的类中去。分清哪个是已有的类,哪个是 Mixin 类,比较重要。
Python 中的 Mixin
在下面的 Python 代码中, 已有的类是 Name,其只有一个初始化方法 __init__() 。 如何为 Name 提供比如将名字全部转为大写或小写的功能呢? 当然可以直接去修改 Name 这个类,手动添加方法。 可是,如果有时不方便去修改,那么就定义一个 Mixin 类,本例中叫做 MixinClass,让 Name 继承它就可以。 当然,这里还是小小修改了 Name, 即在 class Name 的后面添加了 (MixinClass)。

JavaScript 中的 Mixin
JavaScript 也允许 Mixin,不过是混入一个对象(而非类)。在下面的 JavaScript 代码中, 通过 Object.assign() 函数将 mixinObject 对象中的两个方法复制到 Name.prototype 中,从而使得类 Name 获得了 allUpperCase() 与 allLowerCase() 方法。

JavaScript 与 Python 互通互鉴,Nice 。