实现简单的深拷贝

实现对象或数组的深拷贝

实现深拷贝的思路:

1.其中对象所拥有的属性可能是基本类型,也可能为引用类型

2.若属性的值为基本数据类型,可能是number、boolean、string、null、undefined、Symbol,则可以直接用赋值操作来实现拷贝

3.若属性的值为引用数据类型,可能是object、array、function,其中值为object或array时,需要用递归来实现拷贝

 

function deepClone (obj) {
 // 判断不是object或array时,直接返回原值进行赋值操作
if (typeof obj !== 'object' || obj == null) { return obj } let res if (obj instanceof Array) { res = [] } else { res = {} } for (let i in obj) {
   // 判断属性为对象本身的属性,而不是原型链上的属性
if (obj.hasOwnProperty(i)) { res[i] = deepClone(obj[i]) } } return res }

 

posted on 2020-08-02 10:20  尘光  阅读(260)  评论(0)    收藏  举报

导航