src/util.js
function _compareObject(x, y, rc) {
    if (x === y)
        return true;
    if (x.constructor && y.constructor && x.constructor !== y.constructor)
        return false;
    let xKeys = Object.keys(x);
    let yKeys = Object.keys(y);
    xKeys.sort();
    yKeys.sort();
    if (!_equals(xKeys, yKeys, rc))
        return false;
    rc.push(x, y);
    for (let k in x) {
        if (!_equals(x[k], y[k], rc))
            return false;
    }
    rc.pop();
    return true;
}
function _compareObject(x, y, rc) {
    if (x === y)
        return true;
    if (x.constructor && y.constructor && x.constructor !== y.constructor)
        return false;
    let xKeys = Object.keys(x);
    let yKeys = Object.keys(y);
    xKeys.sort();
    yKeys.sort();
    if (!_equals(xKeys, yKeys, rc))
        return false;
    rc.push(x, y);
    for (let k in x) {
        if (!_equals(x[k], y[k], rc))
            return false;
    }
    rc.pop();
    return true;
}
function _compareObject ( x , y , rc ) { if ( x === y ) return true ; if ( x . constructor && y . constructor && x . constructor !== y . constructor ) return false ; let xKeys = Object . keys ( x ) ; let yKeys = Object . keys ( y ) ; xKeys . sort ( ) ; yKeys . sort ( ) ; if ( ! _equals ( xKeys , yKeys , rc ) ) return false ; rc . push ( x , y ) ; for ( let k in x ) { if ( ! _equals ( x [ k ] , y [ k ] , rc ) ) return false ; } rc . pop ( ) ; return true ; }
Internal method for comparing the equivalence of objects, or object-like items.

@param x The first item to compare.
@param y The second item to compare.
@param rc The running counter for comparing circular references.
@returns {boolean} An indication as to whether or not x and y were equal.
Internal method for comparing the equivalence of objects or object - like items .