JavaScript中的Mixins

JavaScript不支持多重继承。但是有时需要将2个类的功能添加到单个对象。Mixin是一种在不使用继承的情况下将属性添加到对象的方法。

例如,假设我们有一个Person类。我们希望人们能够打声招呼。我们可以创建一个sayHiMixin并使用它来使人们打招呼-

示例

let sayHiMixin = {
   sayHi() {
      console.log(`Hello ${this.name}`);
   },
   sayBye() {
      console.log(`Bye ${this.name}`);
   }
};
class Person {
   constructor(name) {
      this.name = name;
   }
}
//复制方法
Object.assign(Person.prototype, sayHiMixin);
new Person("John").sayHi();

输出结果

Hello John

这里没有继承。我们只是将属性从一个对象复制到另一个对象。使用此mixin时,person类也可以从另一个类继承。