【发布时间】:2019-02-15 05:30:00
【问题描述】:
假设我想使用扩展语法为对象分配一个新属性
const source = { payload: "abc" }
const clone = {}
clone.payload = {...source.payload}
console.log(clone);
期望:clone={payload:"abc"}
实际:clone={payload:{'0':'a','1':'b','2':'c'}}
仅供参考:如果来源是这样的source = { payload: { component: "correct" } }。然后传播语法正常工作
问题:我是否滥用了 ES6 扩展语法以及正确的方法是什么
【问题讨论】:
-
const clone = {...source}或const clone = {}; clone.payload = source.payload; -
你正在传播字符串,它本身就是一个字符数组。
-
@HereticMonkey,字符串是可迭代的,因此可以是扩展参数或休息参数——但它们不是字符数组
-
记住
{ }创建了一个对象。所以{...source.payload}创建了一个对象。我假设您不想将对象分配给clone.payload。也许值得注意的是{...source}与Object.assign({}, source)相同。也许这有助于理解发生了什么。 -
@user633183 当然,否则他们不会创建单独的类型。只是对用户名为“JSNoob”的用户进行简要说明:)。
标签: javascript ecmascript-6 babeljs