kre*_*eek 10 javascript backbone.js
我想要覆盖Backbone.sync,但是在添加之后还运行了原始的Backbone.sync功能.我想有点像在Java上用超级类调用super.有没有办法做到这一点,除了复制以前的所有代码?
Bri*_*kel 15
在JavaScript中,您可以将任何属性或方法存储在变量中.下面的示例将Backbone.sync分配给另一个变量,然后在函数结束时使用传递给新Backbone.sync函数的所有变量调用它.
var originalSync = Backbone.sync;
Backbone.sync = function() {
// Your code here.
return originalSync.apply(Backbone, arguments);
};
Run Code Online (Sandbox Code Playgroud)
上面的Brian Nickel提供的答案实际上会覆盖Backbone的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);
}
});
Run Code Online (Sandbox Code Playgroud)
有关其工作原理的更完整信息,请参阅Backbone的注释源本身.希望有所帮助.