我正在构建一个 API,我希望使我的最终返回 对象
成为一个不可变对象(immutable对象)。使更改我的对象的唯一方法是复制到另一个实例。
我该怎么做?
预期行为:
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如果您想获得任何想法或做出贡献。
关于javascript - 在 nodejs 中创建不可变对象(immutable对象)的适当方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39148811/