代码之家  ›  专栏  ›  技术社区  ›  TechnoCorner

主干网模型原型获取与主干网获取

  •  1
  • TechnoCorner  · 技术社区  · 9 年前

    我在看一个网站的模型代码,我有一个关于原型的问题。我知道这对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();

    我超级糊涂了。为什么还要使用原型来获取东西?我无法理解这里的用例。

    请帮忙。

    1 回复  |  直到 9 年前
        1
  •  4
  •   T J    9 年前

    这样做是为了在调用实际的获取方法之前进行一些预处理。换句话说,我们覆盖了模型 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() .

    当然,如果没有自定义逻辑,就像您的示例中那样,这是非常不必要的。