编程语言
首页 > 编程语言> > Javascript-骨干.js模型的视图实例渲染函数是静态的吗?

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