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 trialMichael Dinnall
6,730 Pointshow to do a if statement within a setter
how to do a if statement within a setter for this 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){
this._major = major;
if(
}
}
var student = new Student(3.9, 60);
2 Answers
Adam Beer
11,314 PointsIf 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'.
You use some information from inside the level getter therefore you can use "this" keyword. (Now "this" equal to "level") So when you compare the "Senior" or "Junior" property and the "Freshman" or "Sophomore" should get some information from inside the level getter. That's why we need to go back for information. The code does not know what its value for "string". I'm sorry my English is not perfect. Hope this help.
Adam Beer
11,314 PointsHi Michael! Just create if/else if and inside the first if create a logical statement and this equal to this._major = major;. I hope you can solve the second else if with this instructions. Hope this help.
if (this.level === 'Junior' || this.level === 'Senior' ) {
this._major = major;
}
Michael Dinnall
6,730 PointsI'm confused on why you're calling the level getter simply as this.level. Can you elaborate some more if possible?
Jonathan Santiago
Full Stack JavaScript Techdegree Student 7,998 PointsThis was a huge help! Thanks
Adam Beer
11,314 PointsAdam Beer
11,314 PointsPlease check this short course. You understand how can use "this" keyword.(https://teamtreehouse.com/library/understanding-this-in-javascript)
Michael Dinnall
6,730 PointsMichael Dinnall
6,730 PointsThank you Adam Beer your explanation made sense and cleared up a lot. I completed forgot about how "this" worked. Much appreciated.
Adam Beer
11,314 PointsAdam Beer
11,314 PointsGood luck! Happy coding!