An experimental pattern for doing OOP with IoC in ECMAScript 5