In a class like the following:
class Rect {
constructor({ x = 0, y = 0, width = 0, height = 0, bgColor = "#000000" } = {}) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.bgColor = bgColor;
}
}
It seems like there's a lot of repetition when assigning everything to the class object and I was wondering if there was some way to do it all at once.
CodePudding user response:
you can assign it like this.
class Rect {
constructor({ x = 0, y = 0, width = 0, height = 0, bgColor = "#000000" } = {}) {
Object.assign(this, {x, y, width, height, bgColor})
}
}
const r = new Rect()
console.log(r, r.x, r.y, r.width, r.height, r.bgColor)
CodePudding user response:
You can also use for...of loop like so:
class Rect {
constructor(param = { x: 0, y: 0, width: 0, height: 0, bgColor: "#000000" }) {
for (const [key, value] of Object.entries(param)) {
this[key] = value
}
}
};
const b = new Rect();
console.log(b.x, b.y, b.width, b.height, b.bgColor)
Thow Vinod Liyanage's answer is more elegant and is shorter.