# 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 :

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())``````