Я пишу функцию, которая принимает классы и возвращает класс с одним классом, который может быть расширен, однако я недавно переключился на транспортер babel и понял, что я не должен называть конструкторы классов без новых,Путь вокруг вызова класса es6 с новым?
есть ли способ вокруг этого, который будет работать и в реальном es6?
вот мой многофункциональный
Object.getOwnPropertySymbols;
module.exports = function multiple(_classes){
class MultipleClasses{}
for (const {obj:_class} of iterateObject(_classes)){
const prototypeChain = [];
let prototype = _class.prototype;
do{
prototypeChain.push(prototype);
}
while((prototype = prototype.__proto__) !== null)
prototypeChain.reverse();
for (const prototype of prototypeChain){
assignNonEnumerable(MultipleClasses.prototype, prototype);
}
}
for (const {key, obj:_class} of iterateObject(_classes)){
MultipleClasses.prototype[key] = _class.prototype.constructor;
}
return MultipleClasses;
}
function* iterateObject(obj){
const keys = Object.getOwnPropertyNames(obj);
for (const key of keys){
yield {key, obj:obj[key]};
}
}
function assignNonEnumerable(target, source){
const keys = Object.getOwnPropertyNames(source);
for (const key of keys){
Object.defineProperty(target, key, {
enumerable:false,
writable:true,
configurable:true,
value:source[key]
});
}
const symbols = getOwnPropertySymbols(source);
for (const symbol of symbols){
Object.defineProperty(target, symbol, {
enumerable:false,
writable:true,
configurable:true,
value:source[symbol]
});
}
}
и расширяющие классы я использую
class Player extends multiple({Physical, Circle}) {
constructor(_x, _y, input){
super();
super.Physical(_x, _y)
super.Circle(_x, _y, playerRadius);
...
есть способ, чтобы получить супер назвать несколько функций или что-то?
[расширенный объект литералов] (https://babeljs.io/docs/learn-es2015/#enhanced-object-literals)? (вы можете установить прототип таким образом) – royhowie
В каком классе вы узнали, что классы могут возвращать классы классов, содержащие класс? (Другими словами, ваш вопрос не ясен и не хватает кода) – Amit
Если вы смешиваете кучу вещей в одну вещь, вы должны смешивать свойства с существующим классом или расширять существующий класс. Смешение их вместе приведет к разрыву наследования. Правильное наследование от подклассов - это причина, по которой эти классы работают. – loganfsmyth