Что не так с this? [дубликат]

73
19 ноября 2021, 09:10
На этот вопрос уже даны ответы здесь:
Потеря контекста вызова (5 ответов)
Закрыт 1 год назад.

Никак не могу понять почему в строке присвоения this.id = 120 браузер ругается. Что не так с this?

class Proba {
 constructor(){
   this.id;
 }
 anim () {
   function go () {
     this.id = 120;
     console.log(this.id);
   }
   go();
 }
}
let proba = new Proba();
proba.anim();
Answer 1

Так происходит потому что теряется контекст класса в функции go. Необходима привязка! Код ниже. Либо используйте стрелочную функцию (код второй). Прочтите что такое Привязка контекста к функции

class Proba { 
 constructor(){ 
   this.id; 
 } 
 anim () { 
   function go () { 
     this.id = 120; 
     console.log(this.id); 
   } 
   go.bind(this)(); 
 } 
} 
 
let proba = new Proba(); 
proba.anim();

class Proba { 
 constructor(){ 
   this.id; 
 } 
 anim () { 
   const go = () => { 
     this.id = 120; 
     console.log(this.id); 
   } 
   go(); 
 } 
} 
 
let proba = new Proba(); 
proba.anim();

READ ALSO
GoogleDrive загрузка на UploadURL из браузера

GoogleDrive загрузка на UploadURL из браузера

Отправляю файл на GoogleDrive из браузера с помощью XMLHttpRequestНо все заканчивается ошибкой в консоли:

167
ASP.NET Core. NullReferenceException: Object reference not set to an instance of an object

ASP.NET Core. NullReferenceException: Object reference not set to an instance of an object

Получаю такой исключение при попытки перебрать списокКак его исправить?

150
Проблема с MeasureString ()

Проблема с MeasureString ()

Столкнулся с проблемой, что строчка

84