Я хотел бы переопределить Backbone.sync, но также иметь исходную функциональность Backbone.sync после моих дополнений. Наверное, вроде как супер на суперкласс в Java. Есть ли способ сделать это, кроме копирования всего предыдущего кода?
Переопределите Backbone.sync, но сохраните предыдущие функции
Ответ 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);
}
});
Для получения более полной информации о том, как это работает, обратитесь к самому аннотированному источнику. Надеюсь, что это поможет.