Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2013, 20:48
Новичок на форуме
Отправить личное сообщение для kenrike Посмотреть профиль Найти все сообщения от kenrike
 
Регистрация: 01.05.2013
Сообщений: 8

Конструктор как свойство объекта
Здравствуйте!
есть код:
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 свойствами неправильно. Посоветуйте пожалуйста как улучшить такой код?
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2013, 21:50
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А зачем конструктор пихать в прототип?

function TestConstructor(){
   this.sproperty='alala';
}
function TestObject(){
   this.PROPERTY = new TestConstructor();
}

var testObject = new TestObject();
console.log(testObject.PROPERTY.sproperty);
Ответить с цитированием
  #3 (permalink)  
Старый 01.05.2013, 22:10
Новичок на форуме
Отправить личное сообщение для kenrike Посмотреть профиль Найти все сообщения от kenrike
 
Регистрация: 01.05.2013
Сообщений: 8

Хотелось что бы другой человек в своем коде просто мог переопределить TestConstructor не замарачиваясь, что будет использовать TestObject.
Но в общем все понял. Спасибо)
Ответить с цитированием
  #4 (permalink)  
Старый 01.05.2013, 23:49
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

чувак, форматируй код красиво

function TestConstructor () {
	this.sproperty = 'ololo';
}


function TestObject () {
	this.PROPERTY = new this.TestConstructor();
}

TestObject.prototype.TestConstructor = TestConstructor;



var testObject = new TestObject();
alert(testObject.PROPERTY.sproperty);

Последний раз редактировалось megaupload, 01.05.2013 в 23:52.
Ответить с цитированием
  #5 (permalink)  
Старый 01.05.2013, 23:50
Новичок на форуме
Отправить личное сообщение для kenrike Посмотреть профиль Найти все сообщения от kenrike
 
Регистрация: 01.05.2013
Сообщений: 8

извините, я от руки набирал прямо в теге и не думал об этом)
Ответить с цитированием
  #6 (permalink)  
Старый 01.05.2013, 23:55
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

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) // тадааа

Последний раз редактировалось megaupload, 01.05.2013 в 23:57.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать элемент jquery в конструктор объекта? nip jQuery 5 09.10.2012 13:08
Как обратиться к свойству объекта по имени если оно хранится в переменной xaknik Общие вопросы Javascript 2 25.04.2012 23:12
Как изменить свойство css у всех элементов одного класса AlexJ Events/DOM/Window 7 19.03.2011 06:25
Как по событию вызвать метод определенного экземпляра объекта jvs jQuery 3 24.12.2009 16:04
как узнать тип значения объекта? VHS Общие вопросы Javascript 1 07.01.2009 23:57