2011-10-14 33 views

回答

15

在JavaScript中,您可以将任何属性或方法存储在变量中。以下示例将Backbone.sync分配给另一个变量,然后在函数结束时将所有传递给您的新Backbone.sync函数的变量调用它。

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

完美!谢谢。 – kreek

6

由Brian镍提供上述将实际覆盖骨干answersync方法,这将影响到所有的骨干机型。如果你脑子里想的是重写sync为个别型号,您可以改为更喜欢下面的模式(也确保从the Backbone docs正确的签名重写sync):

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); 
    } 
}); 

有关更完整的信息这是如何工作的,请参阅Backbone's annotated source本身。希望有所帮助。

+1

不应该是'Backbone.Model.prototype.sync.call(etc etc)'? (.Model缺失) – mix3d

+0

是的,感谢您的纠正 – bosgood