【发布时间】:2015-09-17 13:24:33
【问题描述】:
例如,这里有一个复制对象的方法:
const o = {
hello: 'hello',
world: 'world'
}
const { hello, world } = o;
const o2 = { hello, world };
我想使用一个 rest 参数来简化这个,但似乎不太可能(除非我只是弄乱了语法):
const o2 = { ...Object.keys(o) }
这根本不可能,还是我的语法错误?如果不可能,除了Object.assign之外,还有其他方法可以在ES6中复制对象吗?
var o2 = {};
Object.assign(o2, o);
我不喜欢Object.assign 方法的唯一原因是因为它感觉“变异”并且比{ ...Object.keys(o) } 等功能更强大的方法更有状态。想法?
【问题讨论】:
-
根据 MDN 的描述,
Object.assign()这样做:Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标目的。它将返回目标对象。。为什么这不是你想要的复制品?听起来它完全符合普通对象的要求。它没有比其他任何东西或多或少的状态。它会复制一份。 -
@jfriend00,你是 100% 正确的。这是我的一个错误。如果您想将其作为答案,我会接受。