在开发的时候,相信我们都使用过JSON.parse(JSON.stringify(arr))给数组进行克隆,但是,存在一个问题:就是无法克隆函数类型的属性,属性会丢失。
问题还原:
let arr = [
{
a: 1,
b: "嗨",
c: function() {return "ok"}
},
{
a: 2,
b: "喝",
c: function() {return "yes"}
}
]
let arr2 = JSON.parse(JSON.stringify(arr))
console.log(arr2)
解决方式:
deepClone(obj) {
if(Array.isArray(obj)) {
let arr = []
for (let index = 0; index < obj.length; index++) {
const element = obj[index];
arr[index] = Object.assign({}, element)
}
return arr
} else {
return Object.assign({}, obj)
}
},