深拷贝

Posted pxxdbk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深拷贝相关的知识,希望对你有一定的参考价值。

// 深拷贝
var obj1 = {
name: ‘zs‘,
age: 18,
sex: ‘男‘,
dog: {
name: ‘金毛‘,
age: 2
},
friends: [‘ls‘, ‘ww‘]
}

// 深拷贝 把o1的成员拷贝给o2
function deepCopy(o1, o2) {
for (var key in o1) {
// 获取key属性对应的值
var item = o1[key];

// 如果item 是对象?
// var o = {}
if (item instanceof Object) {
// var o = {};
o2[key] = {};
deepCopy(item, o2[key]);
} else if (item instanceof Array) {
// 如果item 是数组呢?
// var arr = [];
o2[key] = [];
deepCopy(item, o2[key]);
} else {
// 如果是简单类型
o2[key] = o1[key];
}
}
}


var obj2 = {};

deepCopy(obj1, obj2);

// 修改obj1中的成员 是否会影响obj2?
obj1.dog.name = ‘xxx‘;
obj1.friends[0] = ‘xxx‘;

console.dir(obj2);

以上是关于深拷贝的主要内容,如果未能解决你的问题,请参考以下文章

2.深拷贝与浅拷贝的区别

什么是深拷贝和浅拷贝以及如何实现深拷贝

深拷贝与浅拷贝的实现(一)

如何实现数组深拷贝和浅拷贝?

IOS 深拷贝和浅拷贝

VUE开发 - 深拷贝与浅拷贝探讨