kenrike, а вот по поводу твоей проблемы с "не хочу засирать область видимости"
var TestObject = (function () {
function TestConstructor () {
this.sproperty = 'ololo';
}
function TestObject () {
this.PROPERTY = new TestConstructor();
}
// экспортируешь то, что нужно
return TestObject;
})();
var testObject = new TestObject();
alert(testObject.PROPERTY.sproperty);
alert(TestConstructor) // тадааа