美文网首页
2019.2.16 如何防止对象变化影响其它值

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

作者: Axe小莱 | 来源:发表于2019-02-16 16:54 被阅读0次
  • 今天做一个功能的时候发现一个问题
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)

相关文章

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

    今天做一个功能的时候发现一个问题 原本以为得到的数组中会有测试1和测试2两个对象,但是实际不是,只有两个测试2对象...

  • 补间器和估值器

    补间器,主要是指定变化的快慢,如何变化 估值器,产生你需要的值对象

  • 可变对象使用copy修饰、不可变对象使用strong会发生什么

    使用copy修饰不可变对象的目的,是防止把可变类型的对象赋值给不可变类型的对象时,可变类型对象的值发生变化,引起不...

  • phpObject

    一、对象的初始化。 二、对象的转换如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,...

  • Objective-C基础学习之@property中的copy关

    1.@property中的copy的作用 防止外界修改内部的值 防止访问对象对象已经释放不用copy情况 用cop...

  • 对象类型

    如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,将会创建一个内置类stdClass...

  • 关于flutter对象引用的理解

    描述 在开发中,不可避免会将对象传递给其它对象使用,其它对象对传递来的对象的操作会引起原对象什么变化呢? 示例 示...

  • iOS - KVC

    KVC-键值编码KVC:对象取值或者设置值。KVO:监听对象值的变化。 获取对象值的优先级 OC对象的属性是由3部...

  • 观察者模式-Observer

    观察者模式很好理解,简单来说就是:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种...

  • 如何用KVO观察对象的子对象的属性变化

    如何用KVO观察对象的子对象的属性变化?KVO观察多级对象属性变化

网友评论

      本文标题:2019.2.16 如何防止对象变化影响其它值

      本文链接:https://www.haomeiwen.com/subject/mdqieqtx.html