Мне нужно заморозить объект / массив, чтобы его нельзя было каким-либо образом изменить.Object.freeze()
почти идеально:
const arr = [];
const obj = { foo: "bar" };
let frozenArr = Object.freeze(arr);
let frozenObj = Object.freeze(obj);
// Uncaught TypeError: Cannot add property 0, object is not extensible
frozenArr.push('abc');
// Uncaught TypeError: Cannot add property x, object is not extensible
frozenObj.x = 'abc';
Проблема в том, Я хотел бы выдать пользовательскую ошибку, которая объяснит разработчику, ПОЧЕМУ объект заморожен, как с ним работать и т. Д....
Я думал об использовании Proxy
или Object.defineProperties()
и ручном сбрасывании ошибок в установщиках, но я не хочу изобретать велосипед, поэтому мой вопрос здесь.Может быть, у кого-то уже есть решение.