<!-- 用递归的方式实现一个对象深拷贝
递归:在函数内部调用自身
-->
<script>
//即将被深拷贝的对象
var oldObj = {
id: 1,
name: 'cyx',
inObj: {
tel:12345,
wechat: 'hello123445'
},
hobby: ['sing', 'dance', 'sports']
};
//声明一个空对象保存深拷贝的对象
var newObj = {};
//用递归的方式开始拷贝
function Copy(target, source) {
for (var k in source) {
// 获取属性值
var item = source[k];
// 判断,数据类型为复杂数据类型Array和Object时,进行递归复制,为简单数据类型时才能进行直接赋值拷贝。
// 由于Array也属于Object,因此判断时应先判断是否为Array类型再判断是否为Object类型。
if (item instanceof Array) {
target[k] = [];
Copy(target[k], item);
} else if (item instanceof Object) {
target[k] = {};
Copy(target[k], item);
} else {
target[k] = item;
}
}
}
Copy(newObj, oldObj);
console.log(newObj);
// 修改newObj属性
newObj.inObj.tel = '10000';
console.log(oldObj);
</script>
用递归的方式深拷贝一个嵌套级对象
猜你喜欢
转载自blog.csdn.net/weixin_48235660/article/details/123780532
今日推荐
周排行