Do you recognise the problem with gaining access to an object that is defined somewhere else in the application than where you will want to use it? In order to do this you either need to pass a reference along throughout your application or pollutte your global namespace. Say for example a UserModel having properties such as username, email, etc… This UserModel is populated with data once the user provides this information or as a result from a service call to the backend. The username might be needed in multiple views throughout your application and it would not be elegant nor safe to put an instance of this in the global namespace by doing something like window.userModel = new UserModel();. Neither would it be elegant to pass along the instance of the model to all the views that need access to it. Especially not when the view that needs access is nested deep down inside a chain of other views. It is not practical and on top of that it couples the whole chain.
A while after completing the project with Michiel I silently started working on an open sourced version and injector.js was born. SwiftSuspenders clearly inspired me hence the many similarities between both API’s.