当有人试图突变被我冻结的对象时,如何抛出自定义错误?

时间:2018-09-18 14:25:59

标签: javascript object freeze frozen

我需要冻结一个对象/数组,以使其无法以任何方式进行突变。 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';

问题是,我想抛出一个自定义错误,该错误将向开发人员解释为什么对象被冻结,如何处理等...

我当时在考虑使用ProxyObject.defineProperties()并在设置器中手动抛出错误,但是我不想重新发明轮子,因此这里提出了我的问题。也许有人已经有了解决方案。

0 个答案:

没有答案