2014-02-21 35 views
0

將功能添加到骨幹模型最有效的方法,我可以做兩件事情之一:增加功能,以骨幹示範

App.WidgetModel= Backbone.Model.extend({ 
    sayHello: function(){ 
     console.log('Hello, I'm a widget'); 
    } 
}); 

......或者......

App.WidgetModel = Backbone.Model.extend({}); 

App.WidgetModel.prototype.sayHello = function(){ 
    console.log('Hello, I'm a widget'); 
}; 

如果我的應用程序隨時會有成千上萬的小部件,那麼這樣做的「正確」方式呢?

回答

2

通常第一個比第二個更普遍。

App.WidgetModel= Backbone.Model.extend({ 
    sayHello: function(){ 
     console.log('Hello, I\'m a widget'); 
    } 
}); 
App.SomeotherModel = App.Widget.extend({ 
    sayHello: function() { 
    App.Widget.call(this); 
    console.log('Hello, I\'m a SomeotherModel'); 
    }; 
}); 

即使你可能要擴展的東西。如果我們看一下.extend method做一些其他的事情源不在骨幹在http://backbonejs.org/#Events

var someObject = {/**/}; 
_.extend(someObject, App.SomeotherModel); 

查找實例模型就像修復替代模型的原型鏈一樣,所以如果你打算使用Model2 = Model1.extend等等,最好用擴展來定義方法。

+0

謝謝。那麼這種方法是否會將該功能添加到模型的原型中?換句話說,第一種和第二種方法實際上是在引擎蓋下完全相同的東西,因此就像彼此一樣有效率? – Fijjit

+1

實際上,只有擴展修復原型鏈,然後將方法添加到新對象的原型纔是相同的。 – pdjota