The part of source code is:
getAllKeys(spec).forEach(function(key) {
if (hasOwnProperty.call(commands, key)) {
var objectWasNextObject = object === nextObject;
nextObject = commands[key](spec[key], nextObject, spec, object);
if (objectWasNextObject && update.isEquals(nextObject, object)) {
nextObject = object;
}
} else {
// ...
}
})
and the update.isEquals code is
update.isEquals = function(a, b) { return a === b; };
Why is nextObject = object; needed?
When isEquals returns true, nextObject equals object already.