是否可以创建可以跟踪更改的对象容器
所述对象是复杂的嵌套数据对象. (符合JSON).
包装器允许您获取对象并保存更改,而无需特别说明更改的内容
是否存在这种封装的设计模式
深度克隆不是一种选择,因为我正在尝试编写这样的包装器以避免这样做.
只有在没有其他解决方案时才应考虑序列化的解决方案.
使用的一个例子是
var foo = state.get();
// change state
state.update(); // or state.save();
client.tell(state.recentChange());
一个jsfiddle片段可能会有所帮助:http://jsfiddle.net/Raynos/kzKEp/
似乎实现内部哈希以跟踪更改是最佳选择.
[编辑]
为了澄清这一点,请在服务器上的node.js上进行操作.唯一改变的是该解决方案可以特定于V8实现.
解决方法:
剥离此问题的javascript方面,只有三种方法可以知道某些内容是否已更改:
>保留副本或表示以进行比较.
>观察在运输过程中发生的变化.
>收到有关变更的通知.
现在把这些概念带回javascript,你有以下模式:
>复制:深度克隆,完整序列化或散列.
>观察:强制使用setter,或者点击javascript引擎(不太适用)
>通知:修改使更改发布事件的代码(同样,不太适用).
看到你已经排除了深度克隆和使用setter,我认为你唯一的选择是某种形式的序列化……参见hash implementation here.