Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用数组应用多个mixin_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 使用数组应用多个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

使用ES6有没有一种方法可以应用数组中定义的多个mixin?混合器的定义如下:

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);