Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

JS: Из фунции класса обратится к самому классу

506
23 сентября 2010 года
evgen
20 / / 20.12.1999
Вопрос такой:
Есть основной класс:
function WMom( conteinerID )
{
this.conteinerID = conteinerID;
var jsondata; <-------------------------------!!!
var loaded = false;
}

Есть другой класс где происходит загрузка через AJAX:

WMom.prototype.ajaxload = function (string)
{
var http = this.createRequestObject();
if( http )
{
http.open('get', string);
http.onreadystatechange = function ()
{
if(http.readyState == 4)
{

--> ??? <---.jsondata = http.responseText;

}
}
http.send(null);
}
else
{
alert("Error!");
}


}

Вопрос как данные из http.responseText отправить в переменную
jsondata основного класса. типа ( WMom.jsondata)
2.2K
23 сентября 2010 года
REFOT
181 / / 08.04.2005
Есть такой сайт javascript.ru , а на нём отличная статья по ооп в JavaScript http://javascript.ru/tutorial/object/inheritance.

Надеюсь после прочтения вопросы отпадут сами собой)
506
23 сентября 2010 года
evgen
20 / / 20.12.1999
Спасибо, весь интернет уже просмотрел и ответ так и не был найден.
Был на приведенных сайтах.
2.2K
23 сентября 2010 года
REFOT
181 / / 08.04.2005
Я так и не понял разобрался ты или нет.
На всякий случай поясню. Переменные jsondata и loaded объявлены у тебя через директиву var т.е как локальные и видны только в пределах функции WMom.

Для того чтобы они стали видны в ajaxload их нужно объявить/добавить через prototype или использовать ключевое слово this и через this обращаться к ним в дальнейшем.

К примеру:

Код:
function WMom( conteinerID )
{
   this.conteinerID = conteinerID;
   this.jsondata = "";
   this.loaded = false;
}

WMom.prototype.ajaxload = function (string)
{
   var http = this.createRequestObject();
   if ( http )
   {
       http.open('get', string);
       http.onreadystatechange = function ()
       {
            if (http.readyState == 4) {
                this.jsondata = http.responseText;
            }
       }
       http.send(null);
   }  
   else {
       alert("Error!");
   }
}
506
23 сентября 2010 года
evgen
20 / / 20.12.1999
нет, не разобрался!
this.jsondata - this в данном случае берет объект фунции http.onreadystatechange = function ()
2.2K
23 сентября 2010 года
REFOT
181 / / 08.04.2005
Точно. Не обратил внимания, извини )
Тогда так:
Код:
WMom.prototype.ajaxload = function (string)
{
   var http = this.createRequestObject();
   if ( http )
   {
       http.open('get', string);
       var _t = this;
       http.onreadystatechange = function ()
       {
            if (http.readyState == 4) {
                _t.jsondata = http.responseText;
            }
       }
       http.send(null);
   }  
   else {
       alert("Error!");
   }
}
506
23 сентября 2010 года
evgen
20 / / 20.12.1999
работает, черт побери.. =)
хотя конечно для меня загадка почему..
спасибо!!!
244
23 сентября 2010 года
UAS
2.0K / / 19.07.2006
рагадка в _t = this;
Ссылка на текущий объект.
Если будете юзать this в контексте события, то он будет не из той области видимости брать this. Короче this локальный для функции, а не для всего класса.
506
23 сентября 2010 года
evgen
20 / / 20.12.1999
тогда подскажи еще дураку..
почему именно ссылка на объект, а не его (объекта) копия?
244
23 сентября 2010 года
UAS
2.0K / / 19.07.2006
Так задумано.

http://www.codeisart.ru/keyword-this-in-javascript/
http://javascript.ru/this
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог