跟踪更改的Javascript对象封装

是否可以创建可以跟踪更改的对象容器

所述对象是复杂的嵌套数据对象. (符合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.

上一篇:mysql – kubernetes和一般调试它


下一篇:javascript – Internet Explorer 6的jQuery height()问题