diff --git a/backbone.js b/backbone.js index 8ac51624..f652cff1 100644 --- a/backbone.js +++ b/backbone.js @@ -395,16 +395,13 @@ // You can also pass an attributes object to diff against the model, // determining if there *would be* a change. changedAttributes: function(diff) { - if (diff) { - var val, changed = false, old = this._previousAttributes; - for (var attr in diff) { - if (_.isEqual(old[attr], (val = diff[attr]))) continue; - (changed || (changed = {}))[attr] = val; - } - return changed; + if (!diff) return this.hasChanged() ? _.clone(this._changed) : false; + var val, changed = false, old = this._previousAttributes; + for (var attr in diff) { + if (_.isEqual(old[attr], (val = diff[attr]))) continue; + (changed || (changed = {}))[attr] = val; } - if (!this.hasChanged()) return false; - return _.clone(this._changed); + return changed; }, // Get the previous value of an attribute, recorded at the time the last