【问题标题】:Weird behaviour with Object.assignObject.assign 的奇怪行为
【发布时间】:2017-09-06 08:06:29
【问题描述】:

我一直坚持在 javascript 中赋值的奇怪行为。

在这段代码中

state = Object.assign({}, state, {
         [area]: Object.assign({}, state[area], {
           [name] : Object.assign({}, state[area][name], {
             selected:  [value]
           })
         })
       })

console.log(state) //state[area][name].selected is unchanged!

但如果我尝试控制台日志 Object.assign

console.log(Object.assign({}, state, {
              [area]: Object.assign({}, state[area], {
                [name] : Object.assign({}, state[area][name], {
                  selected:  [value]
                })
              })
           })); 
//it returns object with value in obj[area][name].selected, as expected

我做错了什么?

编辑:

【问题讨论】:

  • 我在这里找不到问题,代码工作正常(请参阅jsbin.com/ceburo/edit?js,console)。问题一定出在其他地方。
  • console.log 的有趣之处在于输出是 live。在最后一行尝试console.log(JSON.stringify(state, null, ' '))
  • 感谢 cmets!我认为这个问题已经用尽了。我的问题不在于 console.log 。谢谢!

标签: javascript assign


【解决方案1】:

Object.assign 工作正常。 在这种情况下,问题在于 console.log 显示的不是实际数据,而是对对象的引用。 我真正的问题是在某些反应组件中处于变异状态(array.pop())。

【讨论】:

    猜你喜欢
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2015-07-20
    • 2010-10-03
    • 2021-07-12
    相关资源
    最近更新 更多