对象的深拷贝
作者:
JarvanZ | 来源:发表于
2018-03-21 23:39 被阅读0次
数组的深拷贝
- 遍历数组赋值给一个新的数组
- Array.prototype.slice
将原数组中抽离部分出来形成一个新数组作为返回值
- Array.prototype.concat
用于连接多个数组组成一个新的数组作为返回值
- 使用ES6拓展运算符
对象的深拷贝
- 序列化对象然后再解析该json字符串
- 使用ES6拓展运算符
- 使用递归遍历对象键值对赋值给一个新的对象
1.
function deepCopy(obj) {
let newObj = {}
for(let item in obj) {
if(Object.prototype.toString.call(obj) == '[object Object]') {
deepCopy(item)
}else {
newObj[item] = obj[item]
}
}
return newObj
}
2.
function deeCopy(obj) {
if(typeof obj != 'object') {
return obj
}
let newObj = {}
for(let item in obj) {
newObj[item] = deepCopy(obj[item])
}
return newObj
}
- Object.create
第一个参数是新建对象的原型,第二个参数可选,将第二个参数自身拥有的可枚举的属性复制到新建的对象中
- Object.assgin
第一个参数是目标参数,而后的所有参数都是源对象
源对象上某个属性的值是对象,注意,这里目标对象复制得到的是这个属性值对象的引用.而且只能拷贝源对象上自身的值,不能拷贝继承的值以及原型上的值.
本文标题:对象的深拷贝
本文链接:https://www.haomeiwen.com/subject/eotoqftx.html
网友评论