Object.defineProperty()
Определяет свойство с точной настройкой дескриптора.
Сигнатура
Object.defineProperty(obj, prop, descriptor)Метод Object.defineProperty() добавляет или изменяет свойство объекта с детальной настройкой: value, writable, enumerable, configurable или геттер/сеттер. По умолчанию все флаги равны false.
const user = {};
Object.defineProperty(user, "id", {
value: 101,
writable: false,
enumerable: false
});
user.id = 999; // игнорируется
console.log(user.id); // 101
console.log(Object.keys(user)); // [] (не перечислимо)