@@ -981,38 +981,37 @@ function equals(o1, o2) {
981
981
if ( o1 === null || o2 === null ) return false ;
982
982
if ( o1 !== o1 && o2 !== o2 ) return true ; // NaN === NaN
983
983
var t1 = typeof o1 , t2 = typeof o2 , length , key , keySet ;
984
- if ( t1 == t2 ) {
985
- if ( t1 == 'object' ) {
986
- if ( isArray ( o1 ) ) {
987
- if ( ! isArray ( o2 ) ) return false ;
988
- if ( ( length = o1 . length ) == o2 . length ) {
989
- for ( key = 0 ; key < length ; key ++ ) {
990
- if ( ! equals ( o1 [ key ] , o2 [ key ] ) ) return false ;
991
- }
992
- return true ;
993
- }
994
- } else if ( isDate ( o1 ) ) {
995
- if ( ! isDate ( o2 ) ) return false ;
996
- return equals ( o1 . getTime ( ) , o2 . getTime ( ) ) ;
997
- } else if ( isRegExp ( o1 ) ) {
998
- return isRegExp ( o2 ) ? o1 . toString ( ) == o2 . toString ( ) : false ;
999
- } else {
1000
- if ( isScope ( o1 ) || isScope ( o2 ) || isWindow ( o1 ) || isWindow ( o2 ) ||
1001
- isArray ( o2 ) || isDate ( o2 ) || isRegExp ( o2 ) ) return false ;
1002
- keySet = createMap ( ) ;
1003
- for ( key in o1 ) {
1004
- if ( key . charAt ( 0 ) === '$' || isFunction ( o1 [ key ] ) ) continue ;
984
+ if ( t1 == t2 && t1 == 'object' ) {
985
+ if ( isArray ( o1 ) ) {
986
+ if ( ! isArray ( o2 ) ) return false ;
987
+ if ( ( length = o1 . length ) == o2 . length ) {
988
+ for ( key = 0 ; key < length ; key ++ ) {
1005
989
if ( ! equals ( o1 [ key ] , o2 [ key ] ) ) return false ;
1006
- keySet [ key ] = true ;
1007
- }
1008
- for ( key in o2 ) {
1009
- if ( ! ( key in keySet ) &&
1010
- key . charAt ( 0 ) !== '$' &&
1011
- isDefined ( o2 [ key ] ) &&
1012
- ! isFunction ( o2 [ key ] ) ) return false ;
1013
990
}
1014
991
return true ;
1015
992
}
993
+ } else if ( isDate ( o1 ) ) {
994
+ if ( ! isDate ( o2 ) ) return false ;
995
+ return equals ( o1 . getTime ( ) , o2 . getTime ( ) ) ;
996
+ } else if ( isRegExp ( o1 ) ) {
997
+ if ( ! isRegExp ( o2 ) ) return false ;
998
+ return o1 . toString ( ) == o2 . toString ( ) ;
999
+ } else {
1000
+ if ( isScope ( o1 ) || isScope ( o2 ) || isWindow ( o1 ) || isWindow ( o2 ) ||
1001
+ isArray ( o2 ) || isDate ( o2 ) || isRegExp ( o2 ) ) return false ;
1002
+ keySet = createMap ( ) ;
1003
+ for ( key in o1 ) {
1004
+ if ( key . charAt ( 0 ) === '$' || isFunction ( o1 [ key ] ) ) continue ;
1005
+ if ( ! equals ( o1 [ key ] , o2 [ key ] ) ) return false ;
1006
+ keySet [ key ] = true ;
1007
+ }
1008
+ for ( key in o2 ) {
1009
+ if ( ! ( key in keySet ) &&
1010
+ key . charAt ( 0 ) !== '$' &&
1011
+ isDefined ( o2 [ key ] ) &&
1012
+ ! isFunction ( o2 [ key ] ) ) return false ;
1013
+ }
1014
+ return true ;
1016
1015
}
1017
1016
}
1018
1017
return false ;
0 commit comments