Backbonejs:如何使用原型为模型的每个实例附加构造函数?

时间:2012-10-23 23:21:43

标签: javascript backbone.js prototype

如何使用原型为模型的每个实例附加构造函数?我一直在尝试在创建Backbone.Model实例时修改构造函数方法。 BuT我不想将构造函数方法附加到我单独创建的每个模型。添加初始化工作原型;唯一的问题是如果初始化与模型一起传递,它会通过下划线扩展方法覆盖它。

我试过这个

Backbone.Model.prototype.constructor = function(attributes, opts) {
        console.log('hi');
        Backbone.Model.prototype.constructor.call(this, attributes);
};

唯一的问题是,它在扩展之外不起作用;只有当构造函数在创建新实例时扩展模型的对象内部时才会被调用。

我只需要在创建每个模型的实例时运行一些代码。我想用node的socket.io框架执行一些自动绑定工作。

1 个答案:

答案 0 :(得分:1)

不建议混淆骨干继承的内部,并使用提供的方法和流程来实现初始化时的模型操作。要做到这一点 - 以与集合,视图或路由器类似的方式,您应该覆盖一个initialization方法,该方法将扮演构造函数的角色。

如果您需要更改所有模型,只需创建一个新的基类,稍后将其用作所有模型的超类,然后如果需要覆盖子类的初始化方法,请使用remeber调用超类初始化程序内置的主干类__super__属性。

initialize: function() {
    this.constructor.__super__.initialize.call(this);
    // whatever
},

从长远来看,改变骨干核心永远不会对你有好处,因为如果它们引入相互矛盾的变化,我会阻止你轻松更新到新版本。

我去过那里并且完成了 - 在做完之后我建议不要跟任何人走这条路!