值的类型
基本类型和对象
基本类型有六种: null,undefined,boolean,number,string,symbol
引用类型: 数组和对象
let a = { name: 'FE' }
let b = a
b.name = 'EF'
console.log(a.name) // EF
我们会发现,与值类型不相同的是,在赋值结束后,a的name属性也发生了改变
**值类型的赋值操作:**将变量的内容赋值给另外一个变量
**引用类型的复制操作:**赋值的是变量的指针或者地址
那么,如何让引用类型在赋值的时候也具有值类型一样的效果呢?
拷贝操作:
自己定义一个拷贝方法:
function copyobj(aru){
let newobj={};
for(let key in aru){
newobj[key]=aru[key];}
return newobj;}//浅拷贝方法
以上是浅拷贝的方法(只能作用到对对象的第一个层级)
**深拷贝:**如果被拷贝的对象,有一个参数是一个数组(另一个个引用类型)
**第三方工具库:**可以直接利用工具库定义好的方法【lodash】
js自带方法:
【实现浅拷贝】object.assign({},a)//将a中的内容拷贝一份到{}中
【实现深拷贝】JSON的虚拟化,然后反虚拟化 JSON.parse(JSON.stringify(a))//函数内容无法实现拷贝,会被丢弃