如果我有这样的javascript ES6类:
import $ from "jquery";
export class test {
constructor() {
this.es6 = 'yay';
}
writeLine(text){
console.log(text);
}
getTestData(){
writeLine('writeLine call'); // <-- can not call writeLine ??
$.get('/test', function(data){
console.log(data);
console.log(data.data);
this.es6 = data.data;
debugger
writeLine(data.data);
});
}
}
从另一个文件导入类并调用getTestData
System.import('app/classDefinition')
.then(function(classDefinitionModul) {
var test = new classDefinitionModul.test();
console.log(test.es6);
test.getTestData();
})
如何调用方法writeLine
??
答案 0 :(得分:7)
这与es6没有任何关系。
在ajax回调中,this
不再引用该对象。
getTestData () {
// this isn't java (see what I did there)
this.writeLine('writeLine call');
var _this = this;
$.get('/test', function (resp) {
_this.writeLine(resp.data);
});
// or
$.get('/test', function (resp) {
this.writeLine(resp.data);
}.bind(this));
// or
$.get('/test', resp => this.writeLine(resp.data))
}