Javascript kennt keine Mehrfachvererbung. Jedoch können mittel der Object.assign(target, source) Properties des einen Objektes auf ein anderes übertragen werden:
let target = {};
let source = { number: 7 };
Object.assign(target, source);
console.log(target);
// { number: 7 }
Einem Objekt können auch Properties von mehreren anderen Objekten injiziert werden:
const duck = {
hasBill: true
};
const beaver = {
hasTail: true
};
const otter = {
hasFur: true,
feet: 'webbed'
};
const platypus = Object.assign({}, duck, beaver, otter);
console.log(platypus);
// { hasBill: true, hasTail: true, hasFur: true, feet: 'webbed' }
Functional Mixins (–> Vererbungsmässige Komposition)
Code zeigt, wie mit Factory Funktionen geschachtelt aufgerufen werden um verschiedenen Eigenschaften/Methoden aus verschiedenen „Klassen“ zu komponieren:
function IceCreamFactory(obj) {
let isCold = true;
return Object.assign({}, obj, {
melt: function () {
isCold = false;
},
isCold: function () {
return isCold;
}
});
}
let iceCream = IceCreamFactory({});
function ConeFactory(obj) {
let isDry = true;
return Object.assign({}, obj, {
soggy: function () {
isDry = false;
},
isDry: function () {
return isDry;
}
});
}
let iceCreamCone = IceCreamFactory(ConeFactory({}));
console.log(iceCreamCone);