骨干事件聚合器

时间:2013-01-30 20:46:54

标签: events backbone.js underscore.js

对事件聚合器使用_.extend({}, Backbone.Events)_.clone(Backbone.Events)之间的区别是什么?我看到它们都用于此目的:

http://backbonejs.org/#Events http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

1 个答案:

答案 0 :(得分:3)

绝对没有区别。下划线的clone方法的定义是:

_.clone = function(obj) {
  if (!_.isObject(obj)) return obj;
  return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
};

因此,如果_.clone的参数是一个对象,则克隆通过以下方式完成:

_.extend({}, obj);

当您还想在新对象上定义其他属性时,使用_.extend({}, Backbone.Events)语法是有意义的。因为extend接受任意数量的参数,每个参数都将扩展到第一个参数,所以通常按如下方式定义事件对象:

//define an evented object
var foo = _.extend({}, Backbone.Events, {
  bar: function() { /*...*/ }
});