【发布时间】:2017-05-14 15:37:17
【问题描述】:
有没有办法对一个对象强制执行部分不变性,如果有人试图改变它会抛出一个错误?
例如,let obj = {a: 1, b: 2} 和我希望 obj.a 和 obj.b 是不可变的,但仍然允许向 obj 添加更多键,即允许 obj.c = 3。
我想过在子对象中嵌套属性并像这样使用Object.freeze:
let obj = {subObj:{a: 1, b:2}};
Object.freeze(obj.subObj);
但它似乎在之后默默地失败了,即 obj.subObj.a = 3 不会变异 a 但也没有给出任何问题的迹象。有没有办法强制它抛出错误?
【问题讨论】:
标签: javascript ecmascript-6 immutability