深拷贝和浅拷贝
数据拷贝是针对引用类型的。分为浅拷贝和深拷贝。
-
浅拷贝概念:引用类型中包含引用类型,新数据和原数据不共用地址了,但是其中包含的引用类型还会共用内存地址。-
数组实现浅拷贝的方法:-
遍历将每个元素放在新数组中
-
数组.slice()
-
数组.concat()
-
[...数组]
-
-
对象实现浅拷贝的方法:-
遍历将每个键值对放在新对象中
-
Object.assign(新对象, 旧对象)
-
{...对象}
-
- 深拷贝概念:新数据和原数据不共用地址了,其中包含的引用类型也不共用地址了- 深拷贝实现:
JSON.parse(JSON.stringify(原数据))手动封装的递归:function deepCopy(data) { if(Object.prototype.toString.call(data) === '[object Object]'){ var newData = {} } else if(Object.prototype.toString.call(data) === '[object Array]'){ var newData = [] } else{ return data } for(var key in data){ if(typeof data[key] === 'object'){ newData[key] = deepCopy(data[key]) } else { newData[key] = data[key] } } return newData } -