code: function(diff) {
          if (!diff) {
            return this.hasChanged() ? _.clone(this.changed) : false;
          }
          var changed = {};
          var old = this._previousAttributes;
          AV._objectEach(diff, function(diffVal, attr) {
            if (!_.isEqual(old[attr], diffVal)) {
              changed[attr] = diffVal;
            }
          });
          return changed;
        }
docs: Returns an object containing all the attributes that have changed, or
  false if there are no changed attributes. Useful for determining what
  parts of a view need to be updated and/or what attributes need to be
  persisted to the server. Unset attributes will be set to undefined.
  You can also pass an attributes object to diff against the model,
  determining if there *would be* a change.