JS không hỗ trợ multiple inheritance. Mixin = cách thêm behavior vào object **không dùng kế thừa** — copy property từ object này sang object khác.
Ví dụ
let sayHiMixin = {
sayHi() { console.log(`Hello ${this.name}`); },
sayBye() { console.log(`Bye ${this.name}`); }
};
class Person {
constructor(name) { this.name = name; }
}
// Copy method vào prototype
Object.assign(Person.prototype, sayHiMixin);
new Person("John").sayHi(); // Hello John
Đặc điểm
- Không có inheritance — chỉ copy property.
- Class vẫn có thể extends class khác đồng thời dùng mixin.
- Linh hoạt, tránh diamond problem.
Dùng khi: Cần chia sẻ behavior ngang hàng (cross-cutting concerns) như logging, serialization, event emitter...