将 Backbone 集合对象转换为其原始类型

Casting Backbone Collection object to its original type

我使用 backbone js 将自定义元素添加到 backbone js 集合。我需要将其恢复为原来的类型,下面是

var Text = function () {

};

var Radio = function () {

};

function myfunction() {
    var collection = new Backbone.Collection();
    var t = new Text();
    var r = new Radio();
    collection.add(t);
    collection.add(r);

    alert(t instanceof Text);
    alert(collection.at(0) instanceof Text);

}

语句 alert(t instanceof Text); returns true 语句

alert(collection.at(0) instanceof Text); returns false .

有什么方法可以将其转换为原始类型吗?

你不能。

    t不继承Backbone.Model1[=时,
  • collection.add(t)等同于collection.add(new Backbone.Model(t)) 24=]

  • Backbone.Model 的构造函数通过 Model.sett 的属性复制到新对象中,但不保留源对象的任何其他信息2

如果可以,请扩展 Backbone.Model 以构建 TextRadio

var Text = Backbone.Model.extend({

});

如果不是,您将必须在属性中添加其他信息以识别正确的原型。


1 Annotated source code, Collection._prepareModel
2 Annotated source code, Model.set