Как я могу создать неизменяемую/неизменяемую версию объекта в JavaScript, свойства которого не могут быть изменены? Это также должно относиться к свойствам любых под-объектов и т.д.
Все методы, с которыми мне приходилось сталкиваться (Object.defineProperty, Object.freeze и т.д.) работают только для свойств верхнего уровня объекта, но не для под-объектов.
(Возможный прецедент: после создания/модификации объекта типа settings или configuration в определенном модуле, вам нужно подвергнуть его остальным программным модулям в неизменяемой форме.)