OOP Dependency Inversion Principle
This is a decent way to implement Dependency Inversion, from the standpoint of your implementing classes. The only improvements I would recommend is to find a good class library that does the lookup of dependencies for you.

Really Inversion of Control/Dependency Inversion involves several parts:


Writing your classes so that they receive their dependencies via one of three methods:

Constructor injection (like you have) new Foo(x)
Property injection a.foo = b
Setter injection a.setFoo(b)

An object factory that can turn a class name in the form of a String into a new object
An dependency resolver that does the lookup of dependencies and injects them into a new object
A "container" object allowing you to configure your dependencies and wire your classes together


I've created Hypodermic for this purpose, though I think it should be refactored to separate the "container" from the "dependency resolver" functionality. I would be interested in finding out if there are other Dependency Injection libraries out there for JavaScript.