JS基础 - 手写深拷贝
Posted xintangchn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS基础 - 手写深拷贝相关的知识,希望对你有一定的参考价值。
思路:深拷贝一个对象(数组),就是要深拷贝对象(数组)中的每一个元素,很显然应当用递归实现。
- 递归退出条件:当传入的变量是基本类型,或为null时,直接返回变量本身。
- 递推工作:深拷贝每一个属性,注意用hasOwnProperty保证只拷贝自身的属性,不拷贝继承到的属性。
代码:
function deepClone(obj){ //不是引用类型或为null时退出递归 if(typeof obj !== "object" || obj == null){ return obj; } //初始化新变量 let copy; if(obj instanceof Array){ copy = []; }else{ copy = {}; } //深拷贝每一个元素 for(let key in obj){ if(obj.hasOwnProperty(key)){ copy[key] = deepClone(obj[key]); } } return copy; }
以上是关于JS基础 - 手写深拷贝的主要内容,如果未能解决你的问题,请参考以下文章