Backbone 的模型原型获取与 backbone 获取

Backbone's model prototype fetch vs backbone fetch

我正在查看一个网站的模型代码,我对原型有疑问。我知道这对 Javascript.

中的继承很有用

在这个例子中...

define([], function () {

    "use strict";

    /**
     * Data Model
     *
     * @type {Backbone.Model}
     */
    var DataModel = Backbone.Model.extend({

        defaults : {

        },

        urlRoot : '/api/..../../..',

        fetch : function() {
            Backbone.Model.prototype.fetch.apply(this, arguments);
        }
    });

    return Datamodel;
});

为什么我们需要做 Backbone.Model.prototype.fetch.apply(this, arguments); 而不是普通的 Model.fetch();

我非常困惑。为什么还要使用原型来获取某些东西?我无法理解这里的用例。

请帮忙

这样做是为了在调用实际的获取方法之前进行一些预处理。换句话说,我们用我们的自定义逻辑覆盖了模型 fetch 方法,如果需要,它最终会调用原始的 fetch 方法。

例如:

fetch : function(options) {
    if(options.someFlag){
           var dfd = jQuery.Deferred();
           // fetch the data from localStorage
           // dfd.resolve(resultingDataFromLocalStorage);
           return dfd.promise();
    }
    return Backbone.Model.prototype.fetch.apply(this, arguments);
}

与让代码决定在所有调用 model.fetch().

的视图中应如何进行提取相比,这是一个更好的解决方案

当然,如果没有自定义逻辑,在您的示例中这是完全没有必要的。