Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

JavaScript Object-Oriented JavaScript Getters and Setters Creating Setter Methods

Desiree van Dam
Desiree van Dam
7,496 Points

How do I return the right value for the major property?

I don't understand the question of this exercise and how to solve it. Can someone help me?

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 (major === "Senior" || major === "Junior") {
    this._major = major;
  }
  else {
    this._major = "None";
  }
}
}

var student = new Student(3.9, 60);
Desiree van Dam
Desiree van Dam
7,496 Points

The assignment is: Inside the major() setter method, set the student's major to a backing property "_major". If the student's level is Junior or Senior, the value of the backing property should be equal to the parameter passed to the setter method. If the student is only a Freshman or Sophomore, set the "_major" backing property equal to 'None'.

2 Answers

Heidi Fryzell
seal-mask
MOD
.a{fill-rule:evenodd;}techdegree seal-36
Heidi Fryzell
Front End Web Development Treehouse Moderator 24,537 Points

Hi Desiree,

In your "if" statement where you check whether they are a Senior or Junior. Senior or Junior is the "level" not the major, so instead of

if (major === "Senior" || major === "Junior") {
    this._major = major;
  }

try...

if (this.level === "Senior" || this.level === "Junior") {
    this._major = major;
  }

Here is another community answer that you might find helpful.: (https://teamtreehouse.com/community/inside-the-major-setter-method-set-the-students-major-to-a-backing-property-major-if-the-students-level-is-juni-2)

Hope this helps and happy coding!

Desiree van Dam
Desiree van Dam
7,496 Points

Thank you! I tried level === "Senior" before but I forgot the this.level. 😅