Объекты присваиваются по ссылке, простые типы присваиваются по значению.
Если obj.newName - строка, то свойству globalVariable['user'+obj.id].name будет присвоена строка
Второй случай, obj.newName - объект, в этом случае globalVariable['user'+obj.id].name будет присвоена ссылка на сам объект newName, то, что это объект может быть одновременно свойством obj, ни как не мешает уборщику мусора obj убрать.
В данном конкретном случае присвоение obj = null будет просто лишней бесполезной операцией.
как правильно присваивать объекты к глобальному объекту, чтобы на него небыло ссылок ? Пример:
Это слишком общий вопрос, нет на него короткого ответа и
оно ведь поидее всю память сожрет, как
тоже, слишком детское утвержение, применительно конкретно к вашему куску кода.
Кроме того, "Глобальный объект" какое-то стремное понятие, и, использование глобальных переменных в коде, чревато архитектурой из говен и ходуль.
Прочитайте полностью
https://www.ozon.ru/context/detail/id/19677670/ а не одну главу на сайте, тогда вопросы станут более конкретными.