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!");
}
}
JS: Из фунции класса обратится к самому классу
Есть основной класс:
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)
javascript.ru , а на нём отличная статья по ооп в JavaScript http://javascript.ru/tutorial/object/inheritance.
Надеюсь после прочтения вопросы отпадут сами собой)
Есть такой сайт
Надеюсь после прочтения вопросы отпадут сами собой)
Был на приведенных сайтах.
На всякий случай поясню. Переменные jsondata и loaded объявлены у тебя через директиву var т.е как локальные и видны только в пределах функции WMom.
Для того чтобы они стали видны в ajaxload их нужно объявить/добавить через prototype или использовать ключевое слово this и через this обращаться к ним в дальнейшем.
К примеру:
Код:
this.jsondata - this в данном случае берет объект фунции http.onreadystatechange = function ()
Тогда так:
Код:
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!");
}
}
{
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!");
}
}
хотя конечно для меня загадка почему..
спасибо!!!
Ссылка на текущий объект.
Если будете юзать this в контексте события, то он будет не из той области видимости брать this. Короче this локальный для функции, а не для всего класса.
почему именно ссылка на объект, а не его (объекта) копия?