VUE开发 - 深拷贝与浅拷贝探讨

普通的 变量赋值一般都是浅拷贝,类似于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都不会影响到原数据结构。浅拷贝就是你,深拷贝就是另一个你,和你没任何关系,除了一模一样外。

你可能感兴趣的:(VUE开发 - 深拷贝与浅拷贝探讨)