对于经验丰富的网络开发者来说,这可能是一个简单的问题...... (我再次启动了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.
我做错了什么?我用Google搜索了,但我找不到任何与我的案例有关的内容
答案 0 :(得分:3)
您有范围问题。 this
功能中的readystatechange
不是您的FeedParser对象。要获得对它的引用,请尝试:
var self = this;
xmlRequest.onreadystatechange = function(){
...
self.myMethod(...);
};