8

在 ES6 JS 中解构对象时,您可以使用{ a, b }语法来创建新变量,分别从该对象调用a和调用。b但是,据我所知,没有办法让对象的键自动创建具有这些名称的本地范围变量。在下面的例子中,我希望能够使用它的假设伪代码,它const {} = args;会自动生成。const aconst b

const bar = { a: 'apple', b: 'ball' };

const foo = (args) => {
  const { a, b } = args;
  console.log(a, b); // Great!
  const {} = args;   // I am aware this isn't valid syntax...
  console.log(a, b)  // Because of course, it doesn't work.
};

foo(bar);

原因纯粹是因为,在这个 MCVE 之外,我实际上使用了一个带有几十个键的大型对象,我想将某些值从其中传递到 Promise 链的下一部分。我当然可以使用{ a: args.a, b: args.b },但我正在尝试找到最短、最干净的方法。我想我真正想要的是 PHP 的extract()类似语法,但在 ES6 JS 中。

这可能吗?

Ps,我知道如果对象的内容不受信任,这可能被视为一个非常糟糕的主意。

pps。我正在测试的环境是 Node 7.9.0

4

1 回答 1

1

如果您想对键做某事但不想定义它们,为什么不使用Object.keysor Object.entries

const foo = (args) => {
  Object.entries(args).forEach(([key, value]) => {
    console.log(key, value);
  });
};

foo(bar);
于 2018-01-22T03:29:52.963 回答