我有一个使用JQuery + Knockout的丰富的基于 AJAX 的 Web 应用程序。我有一个 JQuery 插件,它包装了我的 Knockout 视图模型以公开实用程序方法,如.reset()、.isDirty()等。
我有一个名为.setBaseline()的方法,它本质上是在填充数据模型后(通过映射插件)拍摄数据模型的快照。然后我可以使用这个快照来快速确定模型是否发生了变化。
我正在寻找的是某种通用函数,它可以返回一个对象,该对象表示两个 JavaScript 对象之间的差异,其中一个对象被认为是主对象。
例如,假设这是我的快照:
var snapShot = {
name: "Joe",
address: "123 Main Street",
age: 30,
favoriteColorPriority: {
yellow: 1,
pink: 2,
blue: 3
}
};
然后假设实时数据如下所示:
var liveData = {
name: "Joseph",
address: "123 Main Street",
age: 30,
favoriteColorPriority: {
yellow: 1,
pink: 3,
blue: 2
}
};
我想要一个返回以下内容的.getChanges(snapShot, liveData)实用程序函数:
var differences = {
name: "Joseph",
favoriteColorPriority: {
pink: 3,
blue: 2
}
};
我希望_.underscore 库可能有这样的东西,但我找不到任何看起来像这样工作的东西。