2019.2.16 如何防止对象变化影响其它值

  • 今天做一个功能的时候发现一个问题
item.fileName = '测试1'
arr.push(item)
item.fileName = '测试2'
arr.push(item)
  • 原本以为得到的数组中会有测试1和测试2两个对象,但是实际不是,只有两个测试2对象,为什么,因为他们都是指向的一个内存空间,所以一个值的变化,会导致另一个同步变化
如何解决这种问题?
  • 那就要不要再原对象中修改,要新建一个对象,方法有两种
  1. Object.assign({}, oldObj)
let newItem = Object.asign({}, item)
  1. 使用JSON.stringify() JSON.parse() 这个不建议,如果对象的value中有方法的话,转化过程中会出问题
let newItem = JSON.stringify(item)
newItem = JSON.parse(newItem)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一:为什么要实现深度克隆? 这是一个前端面试经常问到的问题,并且在知乎上我看到很多的前端大神也都探讨过。这个问题背...
    指尖的宇宙阅读 19,552评论 0 24
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,610评论 1 45
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,285评论 0 3
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,135评论 1 32
  • 往事无用 不能下酒不能镇痛 你若不走 我便化作沙漠中的一点红
    MelissaJiang阅读 184评论 0 0