Javascript 使用数组应用多个mixin
使用ES6有没有一种方法可以应用数组中定义的多个mixin?混合器的定义如下:Javascript 使用数组应用多个mixin,javascript,ecmascript-6,Javascript,Ecmascript 6,使用ES6有没有一种方法可以应用数组中定义的多个mixin?混合器的定义如下: const mixins = Array('Mixin', 'Mixin2'); 然后使用以下内容创建mixin: export const Mixin = function (superClass) { return class extends superClass {} export class MyClass extends MultipleMixins(BaseClass) 并使用mixin与: exp
const mixins = Array('Mixin', 'Mixin2');
然后使用以下内容创建mixin:
export const Mixin = function (superClass) {
return class extends superClass {}
export class MyClass extends MultipleMixins(BaseClass)
并使用mixin与:
export const Mixin = function (superClass) {
return class extends superClass {}
export class MyClass extends MultipleMixins(BaseClass)
您可以在mixin数组上使用reduce()
,传入基类并不断返回新的混合类。这将按照以下顺序应用所有混合:
类基类{
建造师(姓名){
this.name=name
}
}
//添加大写字母
const Mixin=函数(超类){
返回类扩展了超类{
获取大写(){
this.name=this.name.toUpperCase()
还这个
}
}
}
//添加一个反面
const Mixin2=函数(超类){
返回类扩展了超类{
获取反向(){
this.name=[…this.name].reverse().join(“”)
还这个
}
}
}
设Mixin=[Mixin,Mixin 2]
让MixedClass=mixins.reduce((基本,混合)=>mix(基本,基本类)
让实例=新的MixedClass('mark')
//使用新方法
console.log(“reversed&uppercase:,instance.uppercase.reverse.name)
最好不要修改托管对象和内置类型。感谢您的回答!有什么方法可以实现这种语法:类MyClass扩展MultipleMixinFunction([Mixin1,Mixin2],BaseClass)明白了:const Mixin=(Mixin,BaseClass)=>Mixin.reduce((base,Mixin)=>Mixin(base,BaseClass);