Object.assign的奇怪行为

时间:2017-04-11 05:28:58

标签: javascript assign

我在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

我错了什么?

修改 wat

1 个答案:

答案 0 :(得分:0)

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