JavaScript Object-Oriented JavaScript Getters and Setters Creating Setter Methods

Aziz Kemal HOSCAN
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Aziz Kemal HOSCAN
Full Stack JavaScript Techdegree Graduate 16,113 Points

Your setter method is returning the wrong value for the major property.

I am having ///Your setter method is returning the wrong value for the major property./// problem with my code please help!

creating_setters.js
class Student {
    constructor(gpa, credits){
        this.gpa = gpa;
        this.credits = credits;
    }

    stringGPA() {
        return this.gpa.toString();
    }

    get level() {
        if (this.credits > 90 ) {
            return 'Senior';
        } else if (this.credits > 60) {
            return 'Junior';
        } else if (this.credits > 30) {
            return 'Sophomore';
        } else {
            return 'Freshman';
        }
    }
    set major(major) {
      this._major = major;
      if(Student.level === 'Junior' || Student.level === 'Senior') {
        return this._major = major;
      };
      if(Student.level === 'Freshman' || Student.level === 'Sophomore'){
        return this._major = 'None';
      };
    }
}

var student = new Student(3.9, 60);

1 Answer

Steven Parker
Steven Parker
203,176 Points

Here's a few hints:

  • the properties of the current instance are accessed using "this." (instead of "Student.")
  • a setter does not need to return any value
  • you don't need a second "if", you can use a plain "else" instead
  • you don't need to assign the backing store before the test since it will always be overwritten