code: function compare(a, b) {
      for (var key in a) {
          if (a.hasOwnProperty(key)) {
  
              if (typeof a[key] !== typeof b[key]) {
                  return false;
              }
  
              if (typeof a[key] === "object") {
                  if (!compare(a[key], b[key])) {
                      return false;
                  }
              } else if (a[key] !== b[key]) {
                  return false;
              }
          }
      }
  
      return true;
  }
docs: Recursive function that compares immutable properties on two objects.
  @private
  @param {Object} a Source object that will be compared against
  @param {Object} b Comparison object. The functions determines if all of this object's properties are the same on the first object.
  @return {Boolean} Returns true if all of the properties on `b` matched a property on `a`. If not, it returns false.