Backbone.js 比较两个相同主干模型(即一个主干模型的两个不同实例)

Backbone.js 比较两个相同主干模型(即一个主干模型的两个不同实例),backbone.js,Backbone.js,有没有办法比较同一主干网型号的两个不同实例?您评论道: 我不想通过传递属性的名称来手动比较属性的值。相反,当我给出模型时,它应该自己知道这是属性,这是值,然后比较这些值,知道它们是否相等 没有将模型与另一个模型进行比较的内置方法。但是,您可以在主干上实现一种方法。Modelprototype可以实现这一点: Backbone.Model.prototype.equalTo = function(other) { return _.isEqual(this.attributes, othe

有没有办法比较同一主干网型号的两个不同实例?

您评论道:


我不想通过传递属性的名称来手动比较属性的值。相反,当我给出模型时,它应该自己知道这是属性,这是值,然后比较这些值,知道它们是否相等

没有将模型与另一个模型进行比较的内置方法。但是,您可以在
主干上实现一种方法。Model
prototype可以实现这一点:

Backbone.Model.prototype.equalTo = function(other) {
    return _.isEqual(this.attributes, other.attributes);
};
它利用比较两个对象是否相等的方法
isEqual()
get同时通过了这两项

然后,您可以执行以下操作:

if (m1.equalTo(m2)) {
    console.log("equal");
}

如果您不想修改
主干.Model
,可以从中进行扩展并在那里实现
equalTo()

您想测试两个实例是否具有相同的属性,或者您的两个引用是否指向同一个对象?对于前者,
\uu0.isEqual(m1.attributes,m2.attributes)
或者,如果您想限制比较的属性,
\u0.isEqual(m1.pick(“attr1”、“attr2”)、m2.pick(“attr1”、“attr2”)
。您到底想要比较什么?一切?属性?原型?不清楚您想要什么。我不想通过传递属性的名称来手动比较属性的值。相反,当我给出模型时,它应该自己知道这是属性,这是值,然后比较这些值,知道它们是否相等