Brian said: William, Andrew is talking about making an observable interface. Basically, you do something along the lines of observe(myObject), and then whenever myObject is changed, the observable's callback runs. The salient point being the object having the event (A) does not need to be aware of the objects that care about the event (Bs). With a function, the A must know that B exists (or at least know to check for it) and know it has a function HandleEvent(), and then call it. A depends on the existence of B. With the Observable Design Pattern, A is "Observable". It provides an interface like on(), whereby Bs ("Observers") can subscribe to an event (which is precisely what things like on('ready',func) do). A simply has a list of functions it has been given, associated with events it has. When A has an event, it calls each of the functions associated with that event. B then depends on the interface of A. This is important as it allows A to be decoupled from its users and provide its facilities in a general and useful form to many possible clients. <a href="https://en.wikipedia.org/wiki/Observer_pattern" rel="nofollow">https://en.wikipedia.org/wiki/Observer_pattern</a>