1. JSON.parse(JSON.stringify(obj))方法不能复制属性名带有Symbol的属性。
2. 利用Reflect.ownKeys()解决代码如下,
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
let name = Symbol('name')
let say = Symbol('say')
var tmp = {
[say]: 'Hello'
}
var o = {
[name]: 'xx',
age: 2,
tmp,
}
function deepCopy(obj) {
let result = {}
for(let tmp of Reflect.ownKeys(obj)) {
if(typeof obj[tmp] !== 'object')
result[tmp] = obj[tmp]
else
result[tmp] = deepCopy(obj[tmp])
}
return result
}
</script>
</body>
</html>
至此。