浅谈javascript的浅拷贝和深拷贝
一、javascript的数据类型分为引用类型和值类型
一般是栈中存储值和引用地址,堆中存放对象、数组和null。
值类型只存放在栈中;而引用类型的值可能过于庞大,栈中只存放引用地址,这个引用地址指向堆中的数据。
这个时候拷贝引用类型的数据只是拷贝了引用地址,堆中的数据还是一个。

基本数据类型:字符串、数字、布尔和symbol
引用类型:object array null function
二、深拷贝
1 function deepClone( obj = {} ){ 2 //如果不是对象或者为null直接返回 3 if( typeof obj !== 'object' || obj === null ) { 4 return obj 5 } 6 7 //判断引用类型定义变量的类型 8 let result 9 if( obj instanceof Object) { 10 result = {} 11 }else { 12 result = [] 13 } 14 15 //遍历这个对象 16 for( let key in obj) { 17 //判断是不是自己的属性而不是对象的原型属性 18 if( obj.hasOwnProperty(key) ) { 19 result[key] = deepClone( obj[key] ) //递归 20 } 21 } 22 23 return result 24 }

浙公网安备 33010602011771号