JavaScript Object-Oriented JavaScript Getters and Setters Creating Setter Methods

Seth Pabst
Seth Pabst
8,608 Points

Can't understand Set & Get methods

I have no idea how to code this problem, I don't understand get & set

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';
        }
    }

    get major() {
      if(this.level === 'Junior' || this.level === 'Senior') {
        this._major = major;
        return this._major;
      }
      else if(this.level === 'Freshman' || this.level === 'Sophomore') {
        this._major = none;
        return this._major;
      }
    }

    set major(major) {
      this._major = major;
    }
}

var student = new Student(3.9, 60);

1 Answer

David Evans
David Evans
10,336 Points

Hi Seth, you are very close.

First, your get major() should actually be your setter. The challenge doesn't ask you to create a get for the major, only a setter.

After that, the rest if your code is also fairly close. The challenge states that if the student is a freshman or sophomore, to set their major back to 'None'. Make a special note that this should be the string 'None'.

That would make your code as the following which should get you through the challenge:

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) {
      if(this.level === 'Junior' || this.level === 'Senior') {
        this._major = major;
        return this._major;
      }
      else if(this.level === 'Freshman' || this.level === 'Sophomore') {
        this._major = 'None';
        return this._major;
      }
    }
}

var student = new Student(3.9, 60);