javascript - 从异步调用访问成员方法

标签 javascript class oop anonymous-function

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

这是我减少的类(class):

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);
    }
};

我对 this.callback 的调用在构造函数 FileProcess 中工作,在 process() 中工作,但在 readerOnload 中不起作用。我得到:

未捕获类型错误:未定义不是函数

知道我做错了什么吗?

谢谢

最佳答案

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

试试这个:

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

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

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

关于javascript - 从异步调用访问成员方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24477826/

相关文章:

c++ - 我的 C++ 工作有错误吗?

php - 在 PHP 中包含问题

php - Symfony2 类的使用

javascript - JS - 过滤对象的嵌套数组

javascript - 在 Javascript 中循环 JSON。对象中的对象?

javascript - 如何将两个输入绑定(bind)到一个函数

C#:如何构造这个要被覆盖的方法

javascript - 是否有任何理由建立一个网站,以便它可以在禁用 javascript 的情况下运行?

c++ - 是否可以打印对象的名称?

java - 通用 hibernate 对象的面向对象设计