深拷贝与浅拷贝
栈和堆的定义
1.栈:自动分配内存空间,系统自动释放,里面存放的是基本数据类型的值和引用类型的地址
2.堆:动态分配内容,大小不定,也不会自动释放,里面存放引用类型的值
深拷贝和浅拷贝
1.浅拷贝: 浅拷贝对于基本数据类型来说赋的是值,浅拷贝对于引用数据类型来说拷贝的是地址
2.深拷贝:基本数据类型没有深拷贝一说,对于引用数来说深拷贝赋的是值
注意:基本数据类型只有浅拷贝没有深拷贝,引用数据类型既有深拷贝也有浅拷贝,引用数据类型在赋值的时候赋的是址
数组进行深拷贝
1.for循环
var arr1=[1,2,3,'w',4,5,6]
var arr2=[]
for(i=0;i<arr1.length;i++){
arr2.push(arr1[i])
}
arr2.pop();
console.log(arr1)
console.log(arr2)片
2.利用slice();
var arr1=[1,2,3,'w',4,5,6]
var arr2=[]
arr2=arr1.slice();
console.log(arr2)
console.log(arr1)
arr2.pop();
console.log(arr2)
console.log(arr1)
3.利用concat()
var arr1=[1,2,3,'w',4,5,6]
var arr2=[]
arr2=arr2.concat(arr1)
arr2.pop();
console.log(arr2)
console.log(arr1)