编程语言
首页 > 编程语言> > javascript – 如何在ES2015中将所有属性解构为当前范围/闭包?

javascript – 如何在ES2015中将所有属性解构为当前范围/闭包?

作者:互联网

我想做这样的事情:

const vegetableColors = {corn: 'yellow', peas: 'green'};

const {*} = vegetableColors;

console.log(corn);// yellow
console.log(peas);// green

我似乎无法找到或弄清楚如何做到这一点,但我真的以为我以前见过它! :P

注意:我使用Babel,舞台设置为0;

背景:我试图在JSX干燥,并没有参考this.state或this.props无处不在.如果数据发生变化,也不必继续为destructure添加属性.

解决方法:

我想你正在寻找with statement,它完全符合你的要求:

const vegetableColors = {corn: 'yellow', peas: 'green'};
with (vegetableColors) {
    console.log(corn);// yellow
    console.log(peas);// green
}

但是,它被弃用(在严格模式下,包括ES6模块),这是有充分理由的.

destructure all properties into the current scope

你不能在ES61. And that’s a good thing.明确你要介绍的变量:

const {corn, peas} = vegetableColors;

或者,您可以使用Object.assign(global,vegetableColors)扩展全局对象以将它们放在全局范围内,但实际上,这比使用with语句更糟糕.

1:……虽然我不知道在ES7中是否有草案允许这样的事情,但我可以告诉你任何提案都会被TC核实:-)

标签:destructuring,javascript,ecmascript-6,ecmascript-7
来源: https://codeday.me/bug/20190916/1807859.html