当前位置: 首页 > 面试题库 >

如何在ES2015中将所有属性分解为当前作用域/封闭关系?

白嘉志
2023-03-14
问题内容

我想做这样的事情:

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

const {*} = vegetableColors;

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

我似乎找不到或不知道如何做到这一点,但我真的以为我以前看过它!:P

注: 我使用的是babel与stage设置为0;

语境:
我试图在JSX中变得更干燥,而不是引用this.statethis.props无处不在。而且,如果数据发生更改,也不必继续添加属性以进行解构。


问题答案:

我认为您正在寻找该with声明,它完全符合您的要求:

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

但是,出于充分的原因, 不推荐使用 (在严格模式下,其中包括ES6模块)。

将所有属性分解为当前范围

您无法在ES61中使用。那是一件好事。明确介绍要引入的变量:

const {corn, peas} = vegetableColors;

或者,可以使用扩展全局对象,Object.assign(global,vegetableColors)以将它们置于全局范围内,但实际上,这比with声明要糟糕。

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



 类似资料:
  • 我是骆驼的新手,我被困在一个似乎很简单的问题上。我需要解组交换中的2个XML,然后将相应的POJO传递给处理器。我在考虑是否可以取消整理一个xml,将其设置为一个属性作为交换,并对另一个xml重复相同的属性。最后,在处理器中,我将检索属性,并可以在处理器中执行所需的逻辑。我能够成功地解组XML的,并获得exchange.in.body中的最后一个POJO。但是有人能告诉我在exchange属性中设

  • 我有一个属性文件,例如*。 有没有办法将所有键值对存储在哈希映射中?

  • 有人能告诉我如何将映射设置为尚不存在的属性的值吗?我一直在尝试一个更新表达式,但这只在属性存在并且属性的值已经是映射的情况下才有效。 我尝试使用,但后来我得到了: UpdateExpression无效:语法错误;标记:“=”,靠近:#key=:val” 我正在使用Java。请注意,我正在尝试使用UpdateItem请求来完成此操作。我刚刚想到,这可能不适用于映射。我只是假设它会,因为如果不存在,我

  • 我试图用Postman写一个非常简单的测试。我有两个URL和第一个URL得到一些XML文件,然后存储在邮递员变量作为一个前脚本部分。之后,第二个URL使用此响应并发送另一个POST请求。 但是在成功地从xml中得到结果后,不知何故邮递员没有通过这个请求,而是给出了400。 谢谢

  • 我想做一个类似宏的对象,可以检测到它在当前范围内的使用,在这样的情况下表现不同。例如,考虑以下代码片段 有没有可能在C++中用宏或任何其他语言元素来实现这一点? 对于那些好奇为什么我需要这样做的人:我想要制作一个易于复制、可粘贴的宏FOO,我可以将它放在任何地方,以便在两次出现之间花费时间在代码片段上。 例如:

  • 编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答问题。 我有一个Json: 我不知道如何将元帅行星字段解构到map[string]int中,所以我可以访问元素而无需像这个例子中那样取消marshade:json来映射Golang 代码如下: fmt.Println(user.Planets.Planet[“地球])-返回 fmt.Println(user.Pl