const vegetableColors = {corn: 'yellow', peas: 'green'}; const {*} = vegetableColors; console.log(corn);// yellow console.log(peas);// green
Je ne peux pas trouver ou comprendre comment faire cela, mais j'ai vraiment pensé que je l'avais vu quelque part auparavant! : P
REMARQUE: J'utilise Babel avec un stage
réglé sur 0
;
CONTEXT: J'essaie d'être plus sec dans JSX et ne this.state
pas référence à this.state
ou this.props
partout. Et ne doit pas non plus continuer à ajouter des propriétés à destructure si les données changent.
Je pense que vous cherchez la déclaration with
, il fait exactement ce que vous demandez:
const vegetableColors = {corn: 'yellow', peas: 'green'}; with (vegetableColors) { console.log(corn);// yellow console.log(peas);// green }
Cependant, il est obsolète (en mode strict, qui comprend les modules ES6), pour une bonne raison.
Déstructurer toutes les propriétés dans la portée actuelle
Vous ne pouvez pas dans ES6 1 . Et c'est une bonne chose . Soyez explicite sur les variables que vous présentez:
const {corn, peas} = vegetableColors;
Alternativement, vous pouvez étendre l'objet global avec Object.assign(global, vegetableColors)
pour les mettre dans la portée globale, mais vraiment, c'est pire qu'avec une déclaration.
1: … et même si je ne sais pas s'il y a un brouillon pour permettre de telles choses dans ES7, je peux vous dire que toute proposition sera soumise au TC 🙂
Je pense que tu es à la recherche:
const {corn, peas} = vegetableColors;
Live on Babel's REPL
Si Pointy a raison , vous demandez comment faire cela sans connaître les noms de corn
et de peas
, vous ne pouvez pas avec une tâche de déstructuration.
Vous pouvez uniquement à l'échelle mondiale, en utilisant une boucle, mais je suis sûr que vous ne voulez pas le faire à l'échelle mondiale. Pourtant, dans le cas où:
// I'm sure you don't really want this, just being thorough Object.keys(vegetableColors).forEach((key) => { Object.defineProperty(this, key, { value: vegetableColors[key] }); });
(Lancer enumerable: true
là-bas si vous voulez que ces pseudo-constantes soient énumérables).
Cela fonctionne à l'échelle mondiale parce que this
réfère à l'objet global.