Есть такой небольшой кусочек кода:
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'е я гуглил, и в ответ мне выдавало только инфу, связанную со стрелочными ф-ми. Поэтому рискнул предположить, что, поскольку дело тут, скорее всего, именно в стрелочной функции, то и тег "лямбда" сюда подходит.
Выбирай. Вроде последний вариант хороший.
if (Rect.__instances__) {
Rect.__instances__.push(this);
} else {
Rect.__instances__ = [this];
}
Rect.__instances__ ? Rect.__instances__.push(this) : (Rect.__instances__ = [this]);
if (!Rect.__instances__) {
Rect.__instances__ = [];
}
Rect.__instances__.push(this);
(Rect.__instances__ = Rect.__instances__ || []).push(this);
(Rect.__instances__ = []).push(this);
или
Rect.__instances__ = [this];
а push
возвращает новую длину массива, поэтому Вы и наблюдали единицу в первоначальном варианте кода.
var Rect={};
if (Rect.__instances__) {
Rect.__instances__.push("1111");
} else {
Rect.__instances__ = new Array("1111");
}
console.log(Rect)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
необходимо заполнить форму здесь https://fedresursru/messages/IsSearching, т
Ребята, подскажите пожалуйста, какой именно токен нужно использовать для кнопки шаринга facebook
В итоге команда "node" не найдена:( Делаю все это в nw