-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeepCopy.js
More file actions
40 lines (39 loc) · 921 Bytes
/
deepCopy.js
File metadata and controls
40 lines (39 loc) · 921 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
var obj = {
name: 'aaa',
age: '123',
card: [1, 2],
wife: {
name: 'xx',
son: {
name: 'yyy'
}
}
}
var obj1 = {}
function copy(origin, target) {
for(let key in origin) {
target[key] = origin[key]
}
console.log('>>copy target; ', target)
return target
}
//深度copy
function deepCopy(origin, target = {}) {
let toStr = Object.prototype.toString
let arrStr = '[object Array]'
for(let key in origin) {
let val = origin[key]
if(origin.hasOwnProperty(key)) {
if(val !== 'null' && typeof val == 'object') {
target[key] = toStr.call(val) == arrStr ? [] : {}
deepCopy(val, target[key])
} else {
target[key] = origin[key]
}
}
}
console.log(`>>>>>new target: `, target)
return target
}
//copy(obj, obj1)
//deepCopy(obj)