js数据类型主要分为两类,一类简单数据类型,一类是引用类型或者说复杂数据类型。
简单数据类型主要有:Number、String、Boolean、Undefined、null
复杂数据类型主要有:Object
主要区别:简单数据类型变量存储的是真实的值,二复杂数据类型变量存储的是地址
浅拷贝:拷贝的的是数据表层,或者说仅仅是拷贝地址,拷贝简单数据类型为主
深拷贝:拷贝的是数据的值,包括复杂数据类型中的对象和数组
深拷贝的方法:
- 利用函数递归实现深拷贝
- 利用js库._cloneDeep()方法
- 利用JSON实现深拷贝
方法一示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 封装深拷贝函数
const obj = {
uname:'刘德华',
age:12,
hobby:['打球','听歌'],
famaily:{
baby:'pink01'
}
}
let o = {}
function deepcopy(newobj,oldobj) {
for (let k in oldobj ) {
if (oldobj[k] instanceof Array) {
newobj[k]=[]
deepcopy(newobj[k],oldobj[k])
}else if (oldobj[k] instanceof Object) {
newobj[k]=[]
deepcopy(newobj[k],oldobj[k])
}else {
newobj[k]=oldobj[k]
}
}
}
deepcopy(o,obj)
console.log(o);
</script>
</body>
</html>
方法三示例
const o = JSON.parse(JSON.stringify(obj))
浅拷贝使用Object自带的方法
const a = Object.assign(obj)