Javascript-骨干.js模型的视图实例渲染函数是静态的吗?
作者:互联网
这是一个关于骨架.js和javascript的通用问题,我在javascript中处于中等水平:
如果您有一组模型,每个模型都连接到一个视图的实例,那么每个模型实例的视图实例是否包含该视图的render方法的完整实例?如果是这样,建议使用什么方法来确保render方法是“静态的”,从而在每个模型实例都需要完全相同的render函数时不浪费内存?
在下面的示例中,每个hat实例是否还包含render函数的实例,还是指向“静态” render函数?
var Hat = Backbone.Model.extend({});
var HatCollection = Backbone.Collection.extend({
model : Hat,
});
var HatView = Backbone.View.extend({
render : function() {
// output the hat's html
}
});
var hats = new HatCollection([ new Hat(), new Hat(), new Hat()])
hats.each(function(hat) {
hat.view = new HatView({ model : hat });
});
解决方法:
只需检查render方法是否是实例或原型的成员即可:
(function () {
var HatView = Backbone.View.extend({
render : function() {
console.log("rendering a hat...");
}
});
var hview = new HatView();
console.log(hview.hasOwnProperty("render")); // false
console.log(hview.render === HatView.prototype.render); // true
}());
标签:backbone-js,javascript 来源: https://codeday.me/bug/20191202/2085734.html