从异步调用访问成员方法

时间:2014-06-29 16:08:01

标签: javascript class oop anonymous-function

我正在尝试从代码异步调用的方法中访问我的“类”中的方法。

这是我减少的课程:

function FileProcessor(file, callback) {    
    this.file = file;
    this.callback = callback;
}

FileProcessor.prototype.readerOnload = function(e) {
    this.callback(e.target.result);
};

FileProcessor.prototype.process = function() {
    var reader = new FileReader();
    reader.onload = this.readerOnload;

    if (this.file.type == 'text/xml') {
        reader.readAsText(this.file);
    }
};

我对此.callback的cal来自构造函数FileProcess,从process()开始工作,但是不能从readerOnload工作。我明白了:

未捕获的TypeError:undefined不是函数

知道我做错了吗?

由于

1 个答案:

答案 0 :(得分:1)

我认为您的readerOnLoad函数在与您预期不同的上下文中调用,并且最终得到的this值不是FileProcessor的实例。

试试这个:

reader.onload = this.readerOnload.bind(this);

或者,如果您必须支持旧浏览器:

var self = this;
reader.onload = function(e) { self.readerOnLoad(e); };