码迷,mamicode.com
首页 > 其他好文 > 详细

深拷贝

时间:2020-04-08 18:56:27      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:数组   lse   dir   instance   console   func   end   item   xxx   

// 深拷贝
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);

深拷贝

标签:数组   lse   dir   instance   console   func   end   item   xxx   

原文地址:https://www.cnblogs.com/pxxdbk/p/12661770.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!