首页 > 解决方案 > 如何访问 XMLHttpRequest 中的类方法?

问题描述

我有一个 javascript 类来管理我的 API 调用(此处为 TimelinesManager),我需要在 XMLHttpRequest.onload 中调用我的管理器的方法(同一个类,名为 arrayToObject)。

我尝试使用 this.arrayToObject() 和 TimelinesManager.arrayToObject() 访问它,但我收到一个错误,表示它不是函数(TypeError:this.arrayToObject 不是函数)。

class TimelinesManager {

  getTrends(access_token, start, limit, callback) {
    // Create a request to API
    var request = new XMLHttpRequest();
    request.open('GET', 'https://api.extopy.com/timeline/trends.php', true);
    request.onload = function () {
      var data = JSON.parse(this.response);
      if (request.status == 200) {
        // Here I try to access to my class method
        callback(this.arrayToObject(data));
      }
    };
    request.send();
  }

  // The method I want to call
  arrayToObject(data) {
    // Here I proceed my data
  }

}

如何访问此类方法?

标签: javascriptoop

解决方案


尝试这个。我们需要把它变成一个变量。as里面的requestthis是指请求

class TimelinesManager {

  getTrends(access_token, start, limit, callback) {
    // Create a request to API
  
    let self = this;
    var request = new XMLHttpRequest();
    request.open('GET', 'https://api.extopy.com/timeline/trends.php', true);
    request.onload = function () {
      var data = JSON.parse(this.response);
      if (request.status == 200) {
        // Here I try to access to my class method
        callback(self.arrayToObject(data));
      }
    };
    request.send();
  }

  // The method I want to call
  arrayToObject(data) {
    // Here I proceed my data
  }

}


推荐阅读