19

Ich weiß Backbone ist etwas abhängig von Unterstrich und jquery. Gibt es einen Unterschied zwischen den beiden folgenden Zeilen?extend() mit Unterstrich vs. Backbone

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

UND

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

Wenn sie NICHT die gleichen sind, wie anders?

+1

ziemlich sicher, dass Backbone.Events.extend nicht – jermel

+0

existiert 0.9.9 jetzt können Sie Events erweitern http://backbonejs.org/?0-9-9#changelog –

Antwort

33

Backbone.Events.extend existiert nicht, , also werde ich stattdessen Backbone.Model beziehen.

_.extend(target, mixin1, mixin2) wird Eigenschaften in das Zielobjekt

Backbone.Model.extend wird sich subclass Backbone.Model grundsätzlich einen Konstruktor machen (Funktion), dessen Prototyp hat Ihre bereitgestellt Eigenschaften kopieren. Dies ermöglicht es Ihnen Instanzen Ihrer neuen Klasse

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

während _.extend

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

Kurz Backbone.Model.extend einen neuen Konstruktor erzeugt würde zu machen (Funktion), während _.extend ein modifiziert bestehendes Objekt;

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