我使用骨干js将自定义元素添加到骨干js Collection。
我需要将其转换回原来的类型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);
返回true作为语句
alert(collection.at(0) instanceof Text); returns false .
有什么办法可以把它变成原来的类型吗?
答案 0 :(得分:2)
你不能。
collection.add(t)
未继承collection.add(new Backbone.Model(t))
1 时, t
相当于Backbone.Model
Backbone.Model
的构造函数通过Model.set
将t
的属性复制到新对象中,但不保留源对象上的任何其他信息 2
如果可以,请将Backbone.Model
扩展为构建Text
和Radio
var Text = Backbone.Model.extend({
});
如果没有,则必须在属性中添加其他信息以识别正确的原型。
1 Annotated source code, Collection._prepareModel
2 Annotated source code, Model.set