深拷贝与浅拷贝

2019-08-04  本文已影响0人  你喜欢吃青椒吗_c744

基本类型与复杂类型

ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。而引用类型值是指那些保存堆内存中的对象,意思是变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象。

打个比方,基本类型和复杂类型在赋值上的区别可以按“连锁店”和“单店”来理解:基本类型赋值等于在一个新的地方安装连锁店的规范标准新开一个分店,新开的店与其他旧店互不相关,各自运营;而引用类型赋值相当于一个店有两把钥匙,交给两个老板同时管理,两个老板的行为都有可能对一间店的运营造成影响。

深拷贝与浅拷贝的概念只存在于复杂数据类型。因为基本数据类型的简单的赋值就是深拷贝。

定义

需要注意的是,如果对象比较大,层级也比较多,深拷贝会带来性能上的问题。在遇到需要采用深拷贝的场景时,可以考虑有没有其他替代的方案。在实际的应用场景中,也是浅拷贝更为常用。

为什么要使用深拷贝?

我们希望在改变新的数组(对象)的时候,不改变原数组(对象)。

参考文章

低门槛彻底理解JavaScript中的深拷贝和浅拷贝
深拷贝和浅拷贝

上一篇 下一篇

猜你喜欢

热点阅读