node.js 中的只读 JSON 对象

vas*_*shu 5 json node.js

我需要将结果作为 JSON 对象提供给用户并缓存结果。

在某些情况下,用户更改此结果对象,修改后的版本可供后续用户使用。为了避免这种情况,我目前正在克隆结果,但这会导致大量开销,因为它的 JSON 对象非常大。

所以我想让 JSON 只读以提供结果并避免克隆过程。如何使 JSON 对象不可编辑?

Ben*_*Ben 1

您可以使用 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)