Object.preventExtensions запрещает добавлять новые собственные свойства и менять прототип; существующие свойства по-прежнему можно менять и удалять (если позволяют дескрипторы).
Подробности
Операция поверхностная и необратима для этого объекта. В strict mode неверное добавление бросает.
const obj = { name: 'John' };
Object.preventExtensions(obj);
obj.age = 30; // не добавитсяconsole.log(obj.age); // undefineddelete obj.name; // обычно можно
Сравнение: preventExtensions < seal < freeze по жёсткости.
Итог
PreventExtensions — «нельзя расширять», но удаление и изменение существующих свойств ещё возможны.
Для чего нужен `Object.preventExtensions()`? · Sobeso