Сообщение от kobezzza
|
Ты молодец
|
Вах, спасибо.
Сообщение от tysonfury2015
|
Я плохо разбираюсь в синтаксисе, то что там выбросил транслятор -- это вообще мрак, там запаришься разбираться. Поэтому, я еще раз говорю, давай обычную версию, без этого говна. Иначе это выглядит так, как будто ты зассал, и надеешься на то, что я твой код не смогу разобрать и проверить.
|
Лол, а кто-то там еще вопил, что лучше нас всех знает JS
Я написал полностью работоспособный код, полностью решающий твою задачу (в babel repl можешь проверить), на полностью валидном и современном JS. Если ты не можешь его понять, то это лично твои проблемы, иди кури
мануалы.
Вообще непонятно, как ты без знания языка собрался тут с нами спорить.
Сообщение от kobezzza
|
function pluralParent(...parents) {
Ставим свойство parents, как свойство созданного объекта, и потом просто добавляем/удаляем свойства из него и всё. Поиск свойств делает прокси, даже человеку, который вчера узнал JS будет всё очевидно.
|
Аха, только, наверное, лучше скрывать parents за символ, экспортируемый гипотетической либой.
Либо, как вариант, можно стащить из бабеля функцию установки наследования и использовать её в рантайме:
function changeParent(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
enumerable: false,
writable: true,
configurable: true
}
});
if (superClass) {
subClass.__proto__ = superClass;
}
}
class CatDog extends pluralParent(Cat, Dog) {};
changeParent(catDog, Cat); //Теперь catDog - это просто кот.
changeParent(catDog, null); //А теперь - ничто.
changeParent(catDog, pluralParent(Cat, Dog)); //Возвращаем справедливость.