Why it's giving error on "push()"?

I finished this project and it’s giving error in push() on step 8

console.log('Hello world!'); class Media { constructor(title) { this._title = title; this._isCheckedOut = false; this._ratings = []; } get title() { return this._title; } get isCheckedOut() { return this._isCheckedOut; } get ratings() { return this._ratings; } set isCheckedOut(Value) { this._isCheckedOut = Value; } toggleCheckOutStatus () { this.isCheckedOut = !this.isCheckedOut; } getAverageRating () { let ratingsSum = this.ratings.reduce((currentSum, rating) => currentSum + rating, 0); return ratingSum / this.ratings.length; } addRating(value) { this.Ratings.push(value); } } class Book extends Media { constructor(author, title, pages){ super(title); this._author = author; this._pages = pages; }; get author() { return this._author; }; get pages() { return this._pages; }; }; class Movie extends Media { constructor(director, title, runTime){ super(title); this._director = director; this._runTime = runTime; }; get director() { return this._director; }; get runTime() { return this._runTime; }; }; const historyOfEverything = new Book('Bill Bryson', 'A Short History of Nearly Everything', 544); historyOfEverything.toggleCheckOutStatus(); console.log(historyOfEverything.isCheckedOut); historyOfEverything.addRating(4); historyOfEverything.addRating(5); historyOfEverything.addRating(5); console.log(historyOfEverything.getAverageRating()); const speed = new Movie('Jan de Bont', 'Speed', 116); speed.toggleCheckOutStatus(); console.log(speed.isCheckedOut); speed.addRating(1); speed.addRating(1); speed.addRating(5); console.log(speed.getAverageRating());

Because this.Ratings is undefined (the error message is already pointing that out → ‘cannot read property of undefined’). this.Ratings is neither defined in your constructor nor the name of your getter. When you check the spelling, take into account that Javascript is case sensitive.

2 Likes