Показать сообщение отдельно
  #55 (permalink)  
Старый 24.07.2015, 09:14
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Сообщение от 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)); //Возвращаем справедливость.

Последний раз редактировалось Erolast, 24.07.2015 в 12:02.
Ответить с цитированием