前言:
js中数据类型分为基本数据类型(null,undefined,string,number,boolean)和引用类型(object);
基本数据类型是存在栈中,而引用类型是存在堆和栈中;我们不能直接操作对象的堆内存空间,只能按照引用进行访问
正文:
拷贝分为深拷贝和浅拷贝,深拷贝主要针对于引用数据类型,下面是我记录实现深拷贝的两种方法:
1).JSON.parse(JSON.stringify()) (针对普通类型)
2).递归函数 (针对函数)
//参数p为原对象
//参数c为原对象的类型,若原对象为数组,则传入c为[],若原对象是对象传入c为{},也可不传默认为{}
function deepCopy(p,c) {
let c = c || {}
for (let i in p) {
if (typeof p[i] === 'object') {
c[i] = (p[i].constructor === Array) ? [] : {}
deepCopy(p[i], c[i]);
} else {
c[i] = p[i]
}
return c
}
}
有不对的欢迎评论区指正交流~