Добрый день, объясните пожалуйста, согласно теории: мы передаем объект по ссылке. В теории к данному уроку, мы создаем два объекта одному присваиваем определенное значение, другому значение первого (var firstCat = {name: ‘Кекс’, age: 5}; и var secondCat = firstCat); Меняем первый объект и меняется второй и это понятно (Объект здесь всегда один, в памяти не создаётся новое место под копию объекта. Каждая переменная содержит не новую отдельную сущность, а ссылку на один-единственный объект). Но в данном примере мы меняем ссылку на объект, которую мы отправляем в функцию, а не сам объект (если верить теории объект всегда один) и без ЯВНОГО возврата, в чем мы убедились, она меняет наш объект ?
-
Почему в примере один порядок действий, а в нашей задаче обратный и почему он работает, и если он работает почему об этом не сказать?
-
Как может измениться объект, который всегда один, если мы его отправили в функцию?
В нашей программе происходит то же самое. Мы создаём массив cats с объектами игроков и передаём его в функцию runGame. Внутри функции мы используем этот массив под другим именем, players, и меняем хранящиеся в нём объекты. Если после окончания работы функции вывести cats в консоль, то окажется, что его содержимое поменялось, хотя мы ничего не возвращали из функции и вроде бы работали с совсем другим массивом, - ЗАЧЕМ писать , что ''В нашей программе происходит то же самое"… если бы было тоже самое, тогда мы бы меняли сам массив и данные в функции перезаписывались бы тогда.