@mistermister

Зачем передают объект в функцию вот так?

Зачем в функцию (да и не только в функцию) передают объекты вот так?
{...anyObj}
И когда так нужно делать, а когда нет?
  • Вопрос задан
  • 734 просмотра
Решения вопроса 1
mannaro
@mannaro Куратор тега JavaScript
Умею профессионально гуглить
Это spread оператор. Такая запись просто создаёт объект, в который копирует все ключи из другого объекта. Это просто синтаксический сахар для Object.assign({}, anyObj);

Очевидно, так надо делать - когда это нужно. И не надо делать, когда это не нужно. Если надо скопировать объект, скопировать объект и добавить в него новые ключи, объединить 2 объекта. Развитие этих конструкций получило после популяризации философии immutable.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@bpGusar
*spoiler*
Смари. Есть например массив объектов
const dgfdfg = [
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
          ];


с помощью spread оператора ... ты можешь сделать так
dgfdfg[0] = {
            ...dgfdfg[0],
            blabla: 5
          }


и тогда у тебя будет массив объектов выглядеть уже так

const dgfdfg = [
            { bla: 1, blabla: 5 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
            { bla: 1, blabla: 2 },
          ];


то есть заменилась только blabla: 2, теперь цифра не 2 а 5, а вот bla: 1 осталось прежней
это операция упрощает подобные действия.

Так же с помощью spread Ты можешь создать новый массив из существующего
например
const rewtre = [...dgfdfg]

и тогда у тебя будет новый массив объектов rewtre
такую же операцию можно провернуть сделав

const rewtre = dgfdfg.slice()

Так же например есть массив с числами
const sdgfsdf = [1,2,3,4,5,6,8,7,91,81,81,68,6,5168,1,561,16,156,81,651]


как найти например максимальное или минимальное число прям на изи?
вот так
Math.max(...sdgfsdf )

и те не нужен никакой цикл или другой велосипед, всё просто ))

P.S
в вопросе у тебя {...anyObj}
это будет выглядеть примерно так
const anyObj = { bla: 1, blabla: 5 }
const anotherObj = {...anyObj}

то есть ты из одного объекты скопируешь данные в дргуой
Ответ написан
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
https://learn.javascript.ru/destructuring#operator...
Не нужно использовать spread без понимания процесса - однозначно.
Ответ написан
Комментировать
@kidar2
Тут более подробно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы