Как я могу выдать пользовательскую ошибку, когда кто-то пытается изменить объект, который заморожен мной?
Мне нужно заморозить объект / массив, чтобы он не мог быть изменен каким-либо образом. 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()
и вручную выбрасывать ошибки в сеттеры, но я не хочу изобретать велосипед, поэтому мой вопрос здесь. Может быть, у кого-то уже есть решение.