Результат выражения 'this.myMethod' [undefined] не является функцией - PullRequest
1 голос
/ 11 апреля 2011

Возможно, это простой вопрос для опытных веб-разработчиков ... (я снова запустил javascript), я написал этот класс:

var FeedParser = function(url){
    this._url = url;
}
FeedParser.prototype.myMethod = function(doc){
    var elem = doc.getElementById('something');
    //do something...
}
FeedParser.prototype.parse = function(){
    var xmlRequest = new XMLHttpRequest();
    xmlRequest.overrideMimeType("text/xml");
    xmlRequest.open("GET", this._url, true);
    xmlRequest.onreadystatechange = function () {
        if (xmlRequest.readyState == 4) {
            console.log("readyState");
            this.myMethod(xmlRequest.responseXML); //ERROR HERE!
        }
    };
    xmlRequest.send(null);
}

, но когда я делаю

var parser = new FeedParser("http://...");
parser.parse();

Я получаю

Result of expression 'this.myMethod' [undefined] is not a function. 

Что я делаю не так?Я погуглил, но не смог найти ничего, связанного с моим делом

1 Ответ

3 голосов
/ 11 апреля 2011

У вас проблема с областью действия.this внутри вашей функции readystatechange не является вашим объектом FeedParser.Чтобы получить ссылку на это, попробуйте:

var self = this;
xmlRequest.onreadystatechange = function(){
    ...
    self.myMethod(...);
 };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...