19

Wiem, że kręgosłup jest w pewnym stopniu zależny od podkreślenia i jquery. Czy jest różnica między tymi dwoma liniami poniżej?extend() za pomocą znaku podkreślenia kontra szkieletu

app.notifications = _.extend({}, Backbone.Events); 

I

app.notifications = Backbone.Events.extend({}); 

Jeśli są NIE takie same, jak inaczej?

+1

całkiem pewny Backbone.Events.extend nie istnieje – jermel

+0

0.9.9 pozwala teraz rozszerzyć Imprezy http://backbonejs.org/?0-9-9#changelog –

Odpowiedz

33

Backbone.Events.extend nie istnieje, , więc będę odwoływać się do Backbone.Model zamiast tego.

_.extend(target, mixin1, mixin2) ma zamiar skopiować właściwości do obiektu docelowego

Backbone.Model.extend zamierza subclass Backbone.Model zasadzie zrobić konstruktor (funkcja), którego prototyp ma swoje przewidzianych właściwości. Pozwoli to, aby instancje swojej nowej klasy

var Person = Backbone.Model.extend({name: 'yourName'}); 
var me = new Person(); 
alert(me.name); 

podczas _.extend zawiedzie

var Person = _.extend({name: 'yourName'}, Backbone.Model); 
var me = new Person(); //error b/c Person is a regular object 
alert(me.name); 

W krótkim Backbone.Model.extend tworzy nowy konstruktor (funkcja), natomiast _.extend Modyfikuje istniejący obiekt;

var modified = {}; 
alert(modified === _.extend(modified, Backbone.Model)); //true 
alert(modified === Backbone.Model.extend(modified)); //false 
Powiązane problemy