Конструктор как свойство объекта
Здравствуйте!
есть код:
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, время: 02:12. |