javascript - ...state, { } 和 Object.assign({ }, state, { }) 之间的区别

标签 javascript reactjs immutability redux

在这个问题之前,我假设 ...state, {/* ... */} 等价于 Object.assign({}, state, {/* ... */}) 但我发现越来越多的 repo 协议(protocol)在同一个文件中同时使用这两者,因此现在我有点困惑,认为它们有不同的用途。我尝试在网上查找有关此的信息,但无法找到任何关于它们有何不同的明确解释。

示例:https://github.com/choonkending/react-webpack-node/blob/master/app/reducers/topic.js

最佳答案

I assumed that ...state, { /* ... */ } is equivalent es6 syntax of Object.assign({}, state, { /* ... */ })

您的第一个语法缺乏上下文。在您链接的代码中,它在数组文字中使用:

[...state, { /* ... */ }]

这是一个 spread element构造多个数组元素。

整个过程确实创建了一个数组,而不是像Object.assign({}, …)那样的对象。

展开语法不能用在对象字面量中(在 ES6 中, future 有草案会改变这一点)。

关于javascript - ...state, { } 和 Object.assign({ }, state, { }) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37322711/

相关文章:

java - 可变日期类修复

c# - 当方法采用对象 C# 时,字符串作为引用参数的问题

javascript - 如何防止同一系统的多个用户生成相同的引用号

javascript - 如何在 React 16.9 中静音或修复控制台警告?

reactjs - 类型错误 : Cannot read property 'webpackJsonp' of undefined

javascript 在我的客户端和服务器文件夹之间共享代码

data-structures - 将 Haskell Edison API 和 Core 移植到 F# 有什么好处吗?

Javascript 将数组划分为多个范围

javascript - 从 BreezeJs 实体确定关系类型

javascript - 如何在 Chrome 浏览器控制台中提交包含输入值的表单?