Переопределите Backbone.sync, но сохраните предыдущие функции

Я хотел бы переопределить Backbone.sync, но также иметь исходную функциональность Backbone.sync после моих дополнений. Наверное, вроде как супер на суперкласс в Java. Есть ли способ сделать это, кроме копирования всего предыдущего кода?

Ответ 1

В JavaScript вы можете сохранить любое свойство или метод в переменной. Следующий пример назначит Backbone.sync другой переменной, а затем в конце вашей функции вызовите его со всеми переменными, которые передаются вашей новой функции Backbone.sync.

var originalSync = Backbone.sync;
Backbone.sync = function() {
    // Your code here.
    return originalSync.apply(Backbone, arguments);
};

Ответ 2

ответ, предоставленный Брайаном Никелем выше, фактически переопределит метод Магистральный sync, который повлияет на все модели Backbone. Если вы имели в виду переопределение sync для отдельного типа модели, вы можете предпочесть вместо этого следующий шаблон (также, чтобы переопределить sync с правильной сигнатурой из Документы Backbone):

var YourModel = Backbone.Model.extend({
    sync: function(method, model, options) {
        // do your custom work here
        return Backbone.Model.prototype.sync.call(this, method, model, options);
    }
});

Для получения более полной информации о том, как это работает, обратитесь к самому аннотированному источнику. Надеюсь, что это поможет.