File tree Expand file tree Collapse file tree 1 file changed +5
-4
lines changed Expand file tree Collapse file tree 1 file changed +5
-4
lines changed Original file line number Diff line number Diff line change @@ -12,21 +12,22 @@ export function deepCopy(src: any, des: any): void {
12
12
while ( stack . length ) {
13
13
const { src, des } = stack . pop ( ) !
14
14
15
+ // using `Object.keys` which skips prototype properties
15
16
Object . keys ( src ) . forEach ( key => {
16
17
// if src[key] is an object/array, set des[key]
17
18
// to empty object/array to prevent setting by reference
18
19
if ( isObject ( src [ key ] ) && ! isObject ( des [ key ] ) ) {
19
20
des [ key ] = Array . isArray ( src [ key ] ) ? [ ] : { }
20
21
}
21
22
22
- if ( isObject ( des [ key ] ) && isObject ( src [ key ] ) ) {
23
- // src[key] and des[key] are both objects, merge them
24
- stack . push ( { src : src [ key ] , des : des [ key ] } )
25
- } else {
23
+ if ( isNotObjectOrIsArray ( des [ key ] ) || isNotObjectOrIsArray ( src [ key ] ) ) {
26
24
// replace with src[key] when:
27
25
// src[key] or des[key] is not an object, or
28
26
// src[key] or des[key] is an array
29
27
des [ key ] = src [ key ]
28
+ } else {
29
+ // src[key] and des[key] are both objects, merge them
30
+ stack . push ( { src : src [ key ] , des : des [ key ] } )
30
31
}
31
32
} )
32
33
}
You can’t perform that action at this time.
0 commit comments