JavaScript知识总结 --- js数据类型之深拷贝和浅拷贝

在学习一门编程语言的时候,总会先认识它的数据类型,而JS作为一种弱类型的语言,它的数据类型也很是简单。

最近有朋友问到有关于js数据类型的赋值,我也根据自己的理解和参考一些文档进行总结一下给大家分享一下,希望理解不到位的大家可以指出来。^_^

1.JS的数据类型分类:

(1)、基本类型: Undefined、Null、Boolean、Number 和String;

(2)、引用类型:对象(object)、数组(array)、函数(function) ;

2.JS的深拷贝和浅拷贝代码区别

(1)深拷贝:

var obj1 = {a: 1, b: 2,c: 3 };

var obj2 = { A: obj1.a, B: obj1.b, C: obj1.c };

obj2.B =100;

console.log(obj1);        // { a: 1, b: 2, c: 3 }

console.log(obj2);        // { a: 1, b: 100, c: 3 }

(2)浅拷贝:

var obj1 = { a: 1, b: 2, c: 3 };   

var obj2 = obj1; 

 obj2.b = 4;

 console.log(obj1);        // { a: 1, b: 4, c: 3 }    

 console.log(obj2);        // { a: 1, b: 4, c: 3 }


3.JS的深拷贝和浅拷贝的图解和概念:


那么js的数据类型和深拷贝、浅拷贝之间又有什么关系呢?我们可以先来看下这张图:

JavaScript知识总结 --- js数据类型之深拷贝和浅拷贝_第1张图片
一般情况下两种数据类型的赋值情况

从图中就可以简单来说可以总结一下:

1.基本类型:名字和值存储在栈内存中

2.引用数据类型:名字存在栈内存中,值存在于堆内存中,而栈内存中会提供一个引用的地址指向堆内存中的值

上面的总结希望对大家有帮助,当然理解了概念之后,对于实现深拷贝网上也有很多方法,希望大家可以去看看,多看源代码案例更便于对概念的理解,以后有机会也会将实现深拷贝的方法进行总结,谢谢大家继续关注勒。

你可能感兴趣的:(JavaScript知识总结 --- js数据类型之深拷贝和浅拷贝)