È possibile utilizzare l'assegnazione di destrutturazione in un costruttore di classi JavaScript per assegnare le variabili di istanza in modo simile a come è possibile farlo con le variabili normali?È possibile destrutturare le variabili di istanza/membro in un costruttore JavaScript?
Il seguente esempio funziona:
var options = {one: 1, two: 2};
var {one, two} = options;
console.log(one) //=> 1
console.log(two) //=> 2
Ma non può ottenere qualcosa di simile al seguente al lavoro:
class Foo {
constructor(options) {
{this.one, this.two} = options;
// This doesn't parse correctly and wrapping in parentheses doesn't help
}
}
var foo = new Foo({one: 1, two: 2});
console.log(foo.one) //=> I want this to output 1
console.log(foo.two) //=> I want this to output 2
Penso che più la domanda generale è se esiste un modulo di assegnazione destrutturante che prevede la creazione di proprietà su un oggetto esistente anziché un inizializzatore dell'oggetto. – Pointy
In ogni caso c'è sempre 'Object.assign (this, options);' – Pointy
Vale la pena ricordare che è possibile applicare la stessa sintassi anche all'esterno dei costruttori. Sono dati due oggetti: 'let o = {a: 1, b: 2}, p = {};'. Decostruire 'o' in un' p' meno complesso è una pace di torta: '({b: p.b} = o);' produce 'Object {b: 2}' per 'p'. – ftor