Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript Object-Oriented JavaScript Getters and Setters Creating Setter Methods

daly richy tekam kuate
daly richy tekam kuate
7,713 Points

setter method problem

get major(){ return this._major; }

set major(major){ if(Student.level=='Senior'||Student.level=='Junior'){ this._major="major"}else if(Student.level=='Sophomore'||Student.level=='Freshman'){ this._major="None"}

}

This code doesn't work. I would like somebody to explain me why please. It is the coding part after the setter video in javascript OOP. Thank you

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(){
  return this._major;
  }


  set major(major){
 if(Student.level=='Senior'||Student.level=='Junior'){
 this._major="major"}else 
   if(Student.level=='Sophomore'||Student.level=='Freshman'){
 this._major="None"}

  } 



}

var student = new Student(3.9, 60);

1 Answer

2 things:

  • If the student's level is Junior or Senior, you're not setting the backing property equal to the value that is passed to the setter method.
  • You should be using the "this" keyword like in the getter, so that the setter method will update the specific object it's used on.

Let me know if this helps here