TL DR Nothing will break, you can check this by looking at the source, add is the shorthand method for set(model, {add: true, remove: false, merge: false})
If you look at the installation method , then the part where the model changes here ,
_addReference: function(model, options) { this._byId[model.cid] = model; if (model.id != null) this._byId[model.id] = model; if (!model.collection) model.collection = this; model.on('all', this._onModelEvent, this); },
Thus, the collection of models will not be installed on a new one if it already exists, but all events will still be transmitted correctly from all collections added to it.
The reverse is also true, any collection events are triggered by iterating over the models in the collection,
for (i = 0, l = models.length; i < l; i++) { ... if (!options.silent) { model.trigger('remove', model, this, options); } ... }
source share