在 nodejs 中创建不可变对象的适当方法

Appropriate way to create immutable objects in nodejs

我正在构建一个 API,我希望最终 返回 object 一个 不可变对象 .更改我的对象的唯一方法是复制到另一个实例。

我该怎么做?

预期行为:

var objectImmutable = api.call(id);
objectImmutable.new_var = 10;
console.log(objectImmutable.new_var)
=>undefined
//---------
var objectNotImmutable =  JSON.parse(JSON.stringify(api.call(id)));
objectNotImmutable .new_var = 10;
console.log(objectImmutable.new_var)
=>10

你可以做到 Object.freeze

如果您想冻结所有属性,您可以使用 deep-freeze 这是一个非常小的脚本,可以递归地运行属性。

我正在编写一个使对象不可变的小型库 (WIP),但使用 API 您可以进行操作并获得结果(无需更改对象,因为它是不可变的)。如果您想获得任何想法或贡献,您可以在代码 here 上达到顶峰。