在学习一门编程语言的时候,总会先认识它的数据类型,而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的数据类型和深拷贝、浅拷贝之间又有什么关系呢?我们可以先来看下这张图:
![](https://img.haomeiwen.com/i10453183/d900cf82b116d5ad.png)
从图中就可以简单来说可以总结一下:
1.基本类型:名字和值存储在栈内存中
2.引用数据类型:名字存在栈内存中,值存在于堆内存中,而栈内存中会提供一个引用的地址指向堆内存中的值
上面的总结希望对大家有帮助,当然理解了概念之后,对于实现深拷贝网上也有很多方法,希望大家可以去看看,多看源代码案例更便于对概念的理解,以后有机会也会将实现深拷贝的方法进行总结,谢谢大家继续关注勒。
网友评论