javascript - 您可以使用剩余参数作为解构赋值吗?

标签 javascript ecmascript-6

例如,这里有一个复制对象的方法:

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 )。想法?

最佳答案

有一个ES7 proposal for an object spread element ,它的工作原理与数组展开运算符非常相似:

var o1 = {foo: 42}:
var o2 = {...o1};
// o2 is now a shallow copy of o1

正如您在提案中所见,这实际上只是 Object.assign 的语法糖,相当于

var o2 = Object.assign({}, o1);

同样的提案还定义了一个对象 rest 元素,所以这也可以工作:

var {...o2} = o1;

关于javascript - 您可以使用剩余参数作为解构赋值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32620246/

相关文章:

javascript - 如何使用 moment.js 格式化 "2017-02-03T13:41:17 UTC"

php - 从基数解析 float

javascript - 数组元素的赋值是否会复制或引用 JavaScript 中的元素?

javascript - Mongodb Node.js 通过动态键查找值

javascript - 将字符串分隔符更改为反引号 : possible impact?

javascript - 存储在对象属性中的数组的解构赋值

javascript - 为什么 QullJS delta 出现乱序?

javascript - 如何存储异步回调函数的变量

javascript - 如何找到包含这些ID的数组元素?

javascript - JavaScript 永远悬而未决的 promise 不好吗?