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都不会影响到原数据结构。浅拷贝就是你,深拷贝就是另一个你,和你没任何关系,除了一模一样外。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 深拷贝和浅拷贝(Shallow copy 和 Deep copy) 一.概念定义 对象复制有两种:浅拷贝和深拷贝。...
    铁头娃_e245阅读 887评论 0 3
  • 深拷贝和浅拷贝这个问题在面试中常常被问到,而在实际开发中,只要稍有不慎,就会在这里出现问题。尤其对于初学者来说,我...
    西门淋雨阅读 1,859评论 0 1
  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 1,605评论 0 1
  • 其实都是老生常谈的问题了,经常会看见关于深拷贝与浅拷贝的话题,自己也一直是只了解一点,并未系统深入的研究过,理解也...
    ArmorVon阅读 503评论 0 0