我需要将结果作为 JSON 对象提供给用户并缓存结果。
在某些情况下,用户更改此结果对象,修改后的版本可供后续用户使用。为了避免这种情况,我目前正在克隆结果,但这会导致大量开销,因为它的 JSON 对象非常大。
所以我想让 JSON 只读以提供结果并避免克隆过程。如何使 JSON 对象不可编辑?
您可以使用 Object.freeze() 来实现:
var obj = {a: 'a', b: 'b'};
var freezeObj = Object.freeze(obj);
freezeObj.a = 'c';
console.log("%j", freezeObj); // prints {"a":"a","b":"b"}
console.log("%j", obj); // prints {"a":"a","b":"b"}
console.log(obj === freezeObj); // prints true
Run Code Online (Sandbox Code Playgroud)