In JavaScript you can get a little spoilt with the initialisation of variables. For example I might have something like this:
const start = { "x": 20, "y": 20 }, end = { "x": 40, "y": 60 }, width = end.x - start.x, height = end.y - start.y;
Where width and height rely on the previously set variables.
Today, at work, I was asked if there was a way of doing something similar regarding initializing an object. This pseudo code illustrates what I mean:
const psuedoObj = { "start": [20, 20], "end": [40, 60], "width": this.end[0] - this.start[0], "height": this.end[1] - this.start[1], }; console.log(psuedoObj);
The thing is, that doesn't work.
So we got to looking and found this answer on Stack Overflow. To get around the issue we could then do this:
const psuedoObj = { "start": [20, 20], "end": [40, 60], "init": function(){ this.x = this.start[0]; this.y = this.start[1]; this.width = this.end[0] - this.start[0], this.height = this.end[1] - this.start[1], delete this.init return this; } }.init(); console.log(psuedoObj);
Nice ehh? And we even tidy up after ourselves!
No comments:
Post a Comment