@@ -783,7 +783,8 @@ function copy(source, destination, stackSource, stackDest) {
783
783
} else if ( isRegExp ( source ) ) {
784
784
destination = new RegExp ( source . source ) ;
785
785
} else if ( isObject ( source ) ) {
786
- destination = copy ( source , { } , stackSource , stackDest ) ;
786
+ var emptyObject = Object . create ( Object . getPrototypeOf ( source ) ) ;
787
+ destination = copy ( source , emptyObject , stackSource , stackDest ) ;
787
788
}
788
789
}
789
790
} else {
@@ -818,12 +819,14 @@ function copy(source, destination, stackSource, stackDest) {
818
819
delete destination [ key ] ;
819
820
} ) ;
820
821
for ( var key in source ) {
821
- result = copy ( source [ key ] , null , stackSource , stackDest ) ;
822
- if ( isObject ( source [ key ] ) ) {
823
- stackSource . push ( source [ key ] ) ;
824
- stackDest . push ( result ) ;
822
+ if ( source . hasOwnProperty ( key ) ) {
823
+ result = copy ( source [ key ] , null , stackSource , stackDest ) ;
824
+ if ( isObject ( source [ key ] ) ) {
825
+ stackSource . push ( source [ key ] ) ;
826
+ stackDest . push ( result ) ;
827
+ }
828
+ destination [ key ] = result ;
825
829
}
826
- destination [ key ] = result ;
827
830
}
828
831
setHashKey ( destination , h ) ;
829
832
}
0 commit comments