Мой первый вопрос: оригинальный клиент, выпущенный после updateConfig ()?
Может быть, если client
- единственная переменная, которая ссылается на него.
Как ты это докажешь?
Создайте дамп памяти в консоли и выполните поиск этих клиентских объектов.
Есть ли недостатки этого подхода?
Нетдо тех пор, пока никто не ссылается на клиент, которого вы ожидаете обновить:
const referenced = client;
updateConfig();
console.log(referenced === client); // false
Мой предложенный рефакторинг нацелен на то, чтобы сделать это немного менее волшебным ... но, по сути, он делает то же самоевещь
Почему это "менее волшебно", если вы скрываете это изменение за 20 строками кода?Если бы я был рецензентом, я бы отклонил это изменение, потому что оно вводит неожиданное поведение и не дает никакой пользы:
console.log(new Client === new Client); // true, wtf
Как бы я рефакторинг это (хорошие комментарии недооцениваются):
// Note: client gets re-set in updateConfig(), do not reference this!
let client = new Auth({ config });
Какое решение является более подходящим с точки зрения безопасности кода и управления памятью?
«но, по сути, он делает то же самое».Мудрые слова.