Я работаю с некоторыми рефакторингами типов скриптов, связанных с dataContext. Дело в том, что вчера я потратил много времени, пытаясь понять, почему я не получал легкий ветер. Из моего нового документа datacontext. наконец, я получил решение, и это было связано с объемом «этого». Пример плохого использования «это»:Использование «this» в машинописном классе
public getSomething(){
return this.manager.executeQuery(query)
.then(function (data) {
//THIS IS NOT WORKING" INSIDE OF THE FUNCTION
this.log('this log will never be loged :(');
}
}
Теперь тот же код работает отлично, но с использованием «что» в качестве переменной TEMP:
public getSomething(){
var that=this;
return this.manager.executeQuery(query)
.then(function (data) {
that.log('get something is complete');
}
}
, если вы видите в abore второй части код работает нормально, но я должен повторить процесс для каждого метода в моем классе. Теперь мой вопрос: Как я могу создать переменную «this» на уровне класса? это возможно?
Я попытался с кодом ниже, но я получаю ошибку компиляции: «Не удалось найти символ», что ».
export class eventDataContext extends dataContextBase.dataContextBase {
public that;
constructor() {
super();
that = this;
...
}
}
любая идея, как поставить эту новую переменную «что» на уровне класса? Спасибо!
[JavaScript: зачем понимать сферу и закрытие материи] (http://doctrina.org/JavaScript:Why-Understanding-Scope-And-Closures-Matter.html) является хорошим чтением – Satpal
bind должен поэтому трюк https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind – rafaelcastrocouto
спасибо @SteveFenton дал мне короткий четкий ответ! – Rolando