Конструктор как свойство объекта
Здравствуйте!
есть код: function TestObject(){ this.PROPERTY = new this.TestConstructor(); } TestObject.prototype.TestConstructor = function(){ this.sproperty='alala'; }; var testObject = new TestObject(); console.log(testObject.PROPERTY.sproperty); выводит alala, как и должно, однако мне не нравится this в new this.TestConstructor(); и вообще кажется я что-то упускаю и инициализирую объект с prototype свойствами неправильно. Посоветуйте пожалуйста как улучшить такой код? |
А зачем конструктор пихать в прототип?
function TestConstructor(){ this.sproperty='alala'; } function TestObject(){ this.PROPERTY = new TestConstructor(); } var testObject = new TestObject(); console.log(testObject.PROPERTY.sproperty); |
Хотелось что бы другой человек в своем коде просто мог переопределить TestConstructor не замарачиваясь, что будет использовать TestObject.
Но в общем все понял. Спасибо) |
чувак, форматируй код красиво
function TestConstructor () { this.sproperty = 'ololo'; } function TestObject () { this.PROPERTY = new this.TestConstructor(); } TestObject.prototype.TestConstructor = TestConstructor; var testObject = new TestObject(); alert(testObject.PROPERTY.sproperty); |
извините, я от руки набирал прямо в теге и не думал об этом)
|
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) // тадааа |
Часовой пояс GMT +3, время: 00:03. |