Consider model.set({key1: val1, key2: val2});
In traditional Backbone, this will set both keys to their respective values and then fire change:key1 and change:key2 events. In other words, Backbone guarantees the atomicity of set calls with hashes. Mutators breaks this contract by firing each change event after it's value is set. So Mutators would set key1 to val1, then fire the change:key1 event, then set key2 to val2, then fire the change:key2 event.
I believe this is because of the way that calls to oldSet works in the Mutators source.
Consider
model.set({key1: val1, key2: val2});In traditional Backbone, this will set both keys to their respective values and then fire
change:key1andchange:key2events. In other words, Backbone guarantees the atomicity of set calls with hashes. Mutators breaks this contract by firing each change event after it's value is set. So Mutators would set key1 to val1, then fire thechange:key1event, then set key2 to val2, then fire thechange:key2event.I believe this is because of the way that calls to
oldSetworks in the Mutators source.