Есть такой небольшой кусочек кода:
if (Rect.__instances__) {
Rect.__instances__.push(this);
} else {
Rect.__instances__ = [];
Rect.__instances__ = [].push(this);
}
Суть: если у класса есть свойство __instances__, то пихаем в него this. Если нет, то сначала инициализируем __instances__ пустым массивом, а после этого пихаем в него this.
Нужно записать это условие в одну строку вида:
Rect.__instances__ ? Rect.__instances__.push(this) : Rect.__instances__ = [].push(this);
Но этот код вместо того, чтобы вернуть массив со значением this внутри, просто возвращает единицу.
Тогда я попробовал сделать так:
Rect.__instances__ ? Rect.__instances__.push(this) : Rect.__instances__ = (() => {return []}).push(this);
На что мне выдало ошибку вида:
Uncaught TypeError: (intermediate value).push is not a function
Пробовал еще и так:
Rect.__instances__ ? Rect.__instances__.push(this) : Rect.__instances__ = (() => {new Array()}).push(this);
Ошибка та же.
Теперь прошу помощи здесь. Кстати, если кто-то понял, что делает этот код и для того, что я пишу есть решение получше, вроде методов стандартной библиотеки, то такой подход тоже сгодится :)
P.S. Я добавил к вопросу тег lambda, потому что здесь, вроде как именно про это речь и идет. Дело в том, что лямбды в JavaScript'е я гуглил, и в ответ мне выдавало только инфу, связанную со стрелочными ф-ми. Поэтому рискнул предположить, что, поскольку дело тут, скорее всего, именно в стрелочной функции, то и тег "лямбда" сюда подходит.