Is it possible to destructure instance/member variables in a JavaScript constructor?
There are multiple ways of doing this. The first one uses destructuring only and assigns the properties of options to properties on this
:
class Foo {
constructor(options) {
({one: this.one, two: this.two} = options);
// Do something else with the other options here
}
}
The extra parentheses are needed, otherwise the JS engine might mistake the { ... }
for an object literal or a block statement.
The second one uses Object.assign
and destructuring:
class Foo {
constructor(options) {
const {one, two} = options;
Object.assign(this, {one, two});
// Do something else with the other options here
}
}
If you want to apply all your options to the instance, you could use Object.assign
without destructuring:
class Foo {
constructor(options) {
Object.assign(this, options);
}
}