Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to set new values to a class

I have a rectangle class and I want to use shift to assign new values to this.x and this.y by the shift amount. For example, the coordinates were assigned (5,5) r.shift(3,3) will make this.x and this.y (3,3). Currently, my code makes x and y new values, it doesn’t reassign them. How would I go on to do so?

class Rectangle {
  constructor(x, y, width, height){
    this.x = x;
    this.y = y;
    this.width = width;
    this.height = height;
  }
}

Rectangle.prototype.shift = function (changeInX, changeInY) {
  this.x = changeInX
  this.y = changeInY
}
//returns value string
Rectangle.prototype.toString = function () {
  return 'x is ' + this.x + ', y is ' + this.y + ', width is ' + this.width + ', height is ' + this.height
}
//offsets coordinates by amount
Rectangle.prototype.offset = function (changeInX, changeInY) {
 return new Rectangle(this.x+changeInX, this.y+changeInY, this.width, this.height)
}

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

You need to use += instead of just = to increment this.x in your shift function.

e.g.:

  this.x += changeInX
  this.y += changeInY

Full modified example:

class Rectangle {
  constructor(x, y, width, height){
    this.x = x;
    this.y = y;
    this.width = width;
    this.height = height;
  }
}

Rectangle.prototype.shift = function (changeInX, changeInY) {
  this.x += changeInX
  this.y += changeInY
}
//returns value string
Rectangle.prototype.toString = function () {
  return 'x is ' + this.x + ', y is ' + this.y + ', width is ' + this.width + ', height is ' + this.height
}
//offsets coordinates by amount
Rectangle.prototype.offset = function (changeInX, changeInY) {
 return new Rectangle(this.x+changeInX, this.y+changeInY, this.width, this.height)
}

const rect = new Rectangle(1, 2, 3, 4);
console.log('before:', rect.toString())
rect.shift(100, 200);
console.log('after:', rect.toString())
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading