ECMA数据类型
基本类型: string, number, boolean,null,undefind,symbol
引用类型: Object,Array,Date,Function,RegExp
不同的存储方式
基本类型: 基本数据类型在内存中只占固定的大小,存放在栈内存中
引用类型:引用类型的值是对象(大小不固定),保存在堆内存中
赋值:
基本类型:基本数据类型一个值赋值给另一个值,会创建一个副本,在栈内存中开辟另一处地址用来存放,两个值互相独立
引用类型:引用类型的一个值赋值给另一个值,复制的是指针,两个指针指向的同一个值,如果修改的这个值,两个变量都受影响
浅拷贝与深拷贝
这两种拷贝类型都是针对Object引用类型的,基本类型没有深浅拷贝可言
浅拷贝:
拷贝的只是对象的属性,没有拷贝对象中的子对象
方法:其中数组的一些方法 slice() concat()就是浅拷贝
let obj={
name:'zhm',
age:'18',
skill:['html','es6','webpack']
}
function copy(){
let newObj={};
for(let item in obj){
newObj[i]=obj[1]
}
return newObj;
}
深拷贝:
深度拷贝,如果对象中有子对象,也会进行拷贝
一个简单的深拷贝实现:利用JSON
let newObj=JSON.parse(JSON.stringfy(obj));