普通的 变量赋值一般都是浅拷贝,类似于java指针的概念
let a = 1;
let b = a;
对b来说就是浅拷贝。
还有一个问题估计前端小伙伴经常遇到
data(){
return {
list:[1,2,3]
}
}
当你在方法中去需要接收这个list
去处理一些业务,但是又不想影响到原数据。
let item = this.list[0]
if(item){
item = 0
}
这个时候,你说 this.list[0] 是多少?是1还是0 ?
上面就是浅拷贝。
想要避免这种问题影响到主体的处理,利用深拷贝,直接
let item = JSON.pase(JSON.stringIfy(this.list[0]))
这样,你怎么处理item都不会影响到原数据结构。浅拷贝就是你,深拷贝就是另一个你,和你没任何关系,除了一模一样外。