对克隆进行封装
(1)首先判断传递过来的 (数据是否存在 && 数据类型是否为Object)
(2)定义一个目标对象
(3)使用Object.keys进行遍历
(4)使用递归
(5)返回克隆之后的目标对象
export function deepClone(source) {
if (!source && typeof source !== 'object') {
throw new Error('error arguments', 'deepClone')
}
const targetObj = source.constructor === Array ? [] : {}
Object.keys(source).forEach(keys => {
if (source[keys] && typeof source[keys] === 'object') {
targetObj[keys] = deepClone(source[keys])
} else {
targetObj[keys] = source[keys]
}
})
return targetObj
}
应用方式
(1)将封装方法导进来
import { deepClone } from '@/utils';
(2)将要封装的对象传递进去
let data={……}
const form=ref({})
form.value = deepClone(data);