我知道backbone在某种程度上依赖于underscore和jquery。下面这两行代码有什么区别吗?
app.notifications = _.extend({}, Backbone.Events);
并且
app.notifications = Backbone.Events.extend({});
如果它们不相同,那么它们有多不同?
我知道backbone在某种程度上依赖于underscore和jquery。下面这两行代码有什么区别吗?
app.notifications = _.extend({}, Backbone.Events);
并且
app.notifications = Backbone.Events.extend({});
如果它们不相同,那么它们有多不同?
Backbone.Events.extend不存在,因此我将使用Backbone.Model代替。
_.extend(target, mixin1, mixin2)
会将属性复制到目标对象中。
Backbone.Model.extend将基本上创建一个构造函数(函数),其原型具有您提供的属性,以实现对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创建一个新的构造函数(function),而_.extend修改现有对象。
var modified = {};
alert(modified === _.extend(modified, Backbone.Model)); //true
alert(modified === Backbone.Model.extend(modified)); //false