我正在开发一个 TVML/TVJS 应用程序,并且在使用 Javascript 中的类时遇到了问题。
我的起始 application.js 文件调用了一个函数
resourceLoader = new ResourceLoader();
resourceLoader.getHomeScreen();
我有一个名为 ResourceLoader.js 的单独文件,其中包含以下内容:
class ResourceLoader {
getHomeScreen() {
var homeData = BASEURL + "/home.json";
var homeTemplate = BASEURL + "/home.tvml";
this.getRemoteJSON(homeData, homeTemplate, this._jsonLoaded);
}
_jsonLoaded(template, jsonString) {
var parsedJSON = JSON.parse(jsonString);
this.getRemoteXMLFile(template, parsedJSON);
}
getRemoteJSON(file, template, callback) {
var xhr = new XMLHttpRequest();
xhr.responseType = "text";
xhr.addEventListener("load", function() {
callback(template, xhr.responseText);
}, false);
xhr.open("GET", file, true);
xhr.send();
}
getRemoteXMLFile(template, json) {
var xhr = new XMLHttpRequest();
xhr.responseType = "xml";
xhr.addEventListener("load", function() {
loadRemoteFile(xhr.responseText, json);
}, false);
xhr.open("GET", template, true);
xhr.send();
}
}
(BASEURL 是 application.js 中定义的全局变量)
一开始一切正常。getHomeScreen() 被调用,它设法调用 getRemoteJSON() 并将 _jsonLoaded() 作为回调传递。getRemoteJSON 执行 AJAX 调用,然后运行回调。这就是问题发生的地方。一旦进入 _jsonLoaded,“this”就变为未定义,因此当我调用 this.getRemoteXMLFile 时,我收到错误消息“未定义不是对象(正在评估 'this.getRemoteXMLFile')”
为什么“this”在 getHomeScreen() 中有效,但在 _jsonLoaded() 中无效?如何从 _jsonLoaded() 访问我的 getRemoteXMLFile 函数?
谢谢你的帮助。