深拷贝与浅拷贝

2019-06-28  本文已影响0人  薄荷味奶糖

深拷贝:简单来说假设B复制了A,当修改A时,B不发生变化

浅拷贝:简单来说假设B复制了A,当修改A时,B也发生变化

基础数据类型:number,string,boolean,null,undefined,symbol,基本数据类型可以直接访问,他们是按照值进行分配的,存放在栈(stack)内存中的简单数据段,数据大小确定,内存空间大小可以分配。 

引用数据类型:对象{a:1},数组[1,2,3],以及函数,存放在堆(heap)内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。

实际情况能碰到

let temp1 = { a:1}

 temp1 = temp2 

 temp2.a = 2

console.log(temp1.a)// 这里输出2

也就是temp1 复制了 temp2,temp2的值改变了,temp1也随之改变

以上是一个标准的浅拷贝,有时候我们不想要temp1改变,这个时候就需要深拷贝

数组实现深拷贝 对象实现深拷贝

实现原理: 用JSON.stringify将对象转成JSON字符串,再用JSON.parse()把字符串解析成对象,一去一来,新的对象产生了,而且对象会开辟新的栈,实现深拷贝。

注意:这种方法虽然可以实现数组或对象深拷贝,但不能处理函数。

上一篇 下一篇

猜你喜欢

热点阅读