@@ -981,38 +981,37 @@ function equals(o1, o2) {
981981 if ( o1 === null || o2 === null ) return false ;
982982 if ( o1 !== o1 && o2 !== o2 ) return true ; // NaN === NaN
983983 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 ++ ) {
1005989 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 ;
1013990 }
1014991 return true ;
1015992 }
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 ;
10161015 }
10171016 }
10181017 return false ;
0 commit comments