Whenever a Backbone class is instantiated, it runs the code defined in its initialize
method. However, this code isn't run until after the new object has been instantiated. This means that even if you define an initialize
method for a Model
class, the attributes of that Model
class will already have been set before your initialize
code is even called.
Normally, this is a good thing, as it is convenient to have things like the attributes of the Model
class already set, but sometimes, we want to take control before this happens. For example, let's reimagine our previous scenario of fiction and nonfiction books, only this time instead of having a single Collection
class that can create both types of books, we want a Collection
that only creates one type and we want this type decided by the first book that we give the Collection
class when its instantiated.
In other words, if the first book given to our Collection
class has the isFiction
property, we want our Collection...