javascript - 向 Backbone 模型添加功能的最有效方法

标签 javascript backbone.js

要将函数添加到主干模型,我可以执行以下两种操作之一:

App.WidgetModel= Backbone.Model.extend({
    sayHello: function(){
        console.log('Hello, I'm a widget');
    }
});

...或者...

App.WidgetModel = Backbone.Model.extend({});

App.WidgetModel.prototype.sayHello = function(){
    console.log('Hello, I'm a widget');
};

如果我的应用程序中随时有数千个小部件,那么哪种“正确”方法是这样做的?

最佳答案

通常第一个比第二个更常见。

App.WidgetModel= Backbone.Model.extend({
    sayHello: function(){
        console.log('Hello, I\'m a widget');
    }
});
App.SomeotherModel = App.Widget.extend({
  sayHello: function () {
    App.Widget.call(this);
    console.log('Hello, I\'m a SomeotherModel');
  };
});

即使您可能想用非 Backbone 的东西来扩展模型

var someObject = {/**/};
_.extend(someObject, App.SomeotherModel); 

例如查看 http://backbonejs.org/#Events

如果我们查看源代码 .extend method执行一些其他操作,例如修复代理模型的原型(prototype)链,因此如果您要使用 Model2 = Model1.extend 等,最好使用扩展定义方法。

关于javascript - 向 Backbone 模型添加功能的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21932206/

相关文章:

javascript - 使用 ajax、vanilla javascript 更新 Rails HTML 表

javascript - Backbone.js `model.destroy()` 自定义转换?

javascript - 将变量放入 ajax 函数 JQuery

javascript - 按时间间隔链接相似元素修改

javascript - Bootstrap 4 JavaScript 不工作 Symfony4

javascript - backbone.js + google.maps api v3 + overlayview = 使用backbone进行原型(prototype)设计

javascript - 如何在 Backbone.js 的 Router.routes 中绑定(bind)外部方法

javascript - Backbone.js 将脚本/模板信息移动到js文件中

javascript - 如何知道 Backbone model.fetch() 何时完成?

javascript - highchart 系列在 php 的 while 循环内给出错误