Issues with "Build a Library" in Introduction to Javascript

This entire project needs a serious second opinion and review. It has some real issues that needs to be addressed IMO. I posted the links so they can be compared side by side to show the meaning of what I am getting at.



Step 2:

Inside the Media class, create an empty constructor() method that takes one parameter. This argument will set the one property that is in all three subclasses of Media , and does not have a default value.

Ok, so you could put anything here. The video suggest title. But their are many ways to sort media, or anything for that matter. I’m old enough to recall a library an index cards. No default to it being sorted by title. It can be sorted by whatever means you want and the information is retrieved by whatever means you wish. Date, author, publisher, genre, etc. But lets just assume title here.

Why is that matter? Because if you get to Step 4, you will see that the request for title. That means unless you explicity put title in Step 2, you just now did Step 2, 3, 4 incorrectly, and its confusing. So if you explicity want title, why did you just not say so in Step 2?

Honestly, I put arg for title, because it wanted an argument, but I had no idea what argument it wanted until I did a few more steps.

Step 3:

Inside the constructor, set the values for Media properties that Book , CD , and Movie share. Prepend all of the property names with an underscore ( _ ).

Ok, with what? If you watch the video it tells you the answer, but thats because they skipped several steps forward into the middle of the project to figure that out? Why? As if this isn’t confusing enough, lets make it more confusing? Why would we set key:value on something that he have no idea what they are until later on? Like, we are talking about skipping steps all the way to Step 7 to figure this out. Why? This is unnecessary.

Step 7:

If you got to this step without looking ahead, you will have to go back and redo your work before you can carry on with this step.

There are some more rough spots here and there in the project. But at least they are linear and if you at most skip one step ahead of go one step back you can figure it out along with looking at the hint or watching the video. But this project is impossible to complete without the video until you get past at least Step 7, and really pass the creation of the parent class.


  • Properties : author (string), title (string), pages (number), isCheckedOut (boolean, initially false ), and ratings (array, initially empty).
  • Getters : all properties have a getter
  • Methods : .getAverageRating() , .toggleCheckOutStatus() , and .addRating()


  • Properties : director (string), title (string), runTime (number), isCheckedOut (boolean, initially false ), and ratings (array, initially empty)
  • Getters : all properties have a getter
  • Methods : .getAverageRating() , .toggleCheckOutStatus() , and .addRating()


  • Properties : artist (string), title (string), isCheckedOut (boolean, initially false ), and ratings (array, initially empty), songs (array of strings)
  • Getters : all properties have a getter
  • Methods : .getAverageRating() , .toggleCheckOutStatus() , and .addRating()

The above is included at the top of the instructions. This project required working like an actual developer. You receive a set of parameters, and build to suit. I can see that if you didn’t refer back to the top of the instructions, that you wouldn’t know what properties belonged to each sub class, but they were all clearly listed at the top. Not trying to pick at you, but I enjoy a challenge, and liked this particular project. Just my opinion.