Kann die Destrukturierungszuweisung in einem Konstruktor der JavaScript-Klasse verwendet werden, um die Instanzvariablen so zuzuordnen, wie Sie es mit normalen Variablen tun können?Ist es möglich, in einem JavaScript-Konstruktor Instanz-/Membervariablen zu destrukturieren?
Das folgende Beispiel funktioniert:
var options = {one: 1, two: 2};
var {one, two} = options;
console.log(one) //=> 1
console.log(two) //=> 2
Aber ich kann nicht so etwas wie die folgenden an die Arbeit:
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
Ich denke, die mehr allgemeine Frage ist, ob es ein Destrukturierungszuweisungsformular gibt, das das Erstellen von Eigenschaften für ein vorhandenes Objekt anstelle eines Objektinitialisierers vorsieht. – Pointy
Anyway gibt es immer 'Object.assign (this, options);' – Pointy
Es ist erwähnenswert, dass Sie die gleiche Syntax auch außerhalb von Konstruktoren anwenden können. Gegeben sind zwei Objekte: 'let o = {a: 1, b: 2}, p = {}; '. Dekonstruieren Sie 'o' zu einem weniger komplexen' p' ist ein Stück Kuchen: '({b: p.b} = o);' ergibt 'Objekt {b: 2}' für 'p'. – ftor