Ответ 1
Backbone.Events.extend не существует, поэтому я буду ссылаться только на Backbone.Model.
_.extend(target, mixin1, mixin2)
собирается копировать свойства в целевой объект
Backbone.Model.extend будет subclass
Backbone.Model в основном создает конструктор (функцию), прототип которого имеет ваши предоставленные свойства. Это позволит вам создавать экземпляры вашего нового класса
var Person = Backbone.Model.extend({name: 'yourName'});
var me = new Person();
alert(me.name);
а _.extend
завершится с ошибкой
var Person = _.extend({name: 'yourName'}, Backbone.Model);
var me = new Person(); //error b/c Person is a regular object
alert(me.name);
Короче Backbone.Model.extend создает новый конструктор (функция), а _.extend изменяет существующий объект;
var modified = {};
alert(modified === _.extend(modified, Backbone.Model)); //true
alert(modified === Backbone.Model.extend(modified)); //false