Skip to content

Instantly share code, notes, and snippets.

@codecademydev

codecademydev/app.js Secret

Created Jul 23, 2020
Embed
What would you like to do?
Codecademy export
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(newIsCheckedOut) {
this._isCheckedOut = newIsCheckedOut;
}
toggleCheckOutStatus() {
this.isCheckedOut = !this.isCheckedOut;
}
getAverageRating() {
let ratingSum = this.ratings.reduce((accumulator, rating) => accumulator + rating);
return ratingSum / this.rating.length;
}
addRating(value) {
this.rating.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())
/*
class new CD extends Media () {
constructor(artist, title, songs) {
super(title)
this._artist = artist;
this._songs = songs;
}
get artist() {
return this._artist;
}
get songs() {
return this._songs;
}
}
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.