-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeepCopy.html
More file actions
38 lines (34 loc) · 966 Bytes
/
deepCopy.html
File metadata and controls
38 lines (34 loc) · 966 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
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<script>
function deepCopy(targetObj, newObj) {
newObj = newObj || {}
for (let property in targetObj) {
if (typeof targetObj[property] === 'object') {
newObj[property] = (targetObj[property].constructor === Array) ? [] : {};
deepCopy(targetObj[property], newObj[property])
} else {
newObj[property] = targetObj[property]
}
}
return newObj
}
function test() {
console.log('test');
return false
}
let target = {
a: 1,
b: { k: 1, n: 2 },
c: [{ 1: 2 }, { 3: 4 }, [{ 1: 1, 2: 2 }]],
t: test
}
let result = deepCopy(target)
result.t()
</script>
</html>