Докато изучавам Javascript, нещо, което продължавам да се спъвам, е незабележимо звучащата ключова дума:

this 

Значението на this в Javascript изглежда неуловимо и трудно за проследяване. Най-често срещаният начин, по който разбрах, че работи, е да представи текущия екземпляр на обект. Съвсем наскоро имах затруднения с this във функцията за удар по-долу за обект на игра:

Докато изпълнявах тестовете си за тази функция, дълго време бях посрещнат с недефинирано съобщение за грешка. Бях объркан къде греша и използвах console.log(), за да получа видимост на грешката. В крайна сметка, след като говорих с Felipe Sere, разбрах, че моята функция не разпознава this.stored_pinsвътре в цикъла forEach. Обхватът на this не се простира вътре в тялото на цикъла. За да заобиколя това, присвоих this.stored_pinsна променливатаstoredPins:

Искам да разбера повече за „обхвата“ на this в програма на javascript. Мисля, че фактът, че бях настроил програмата си да бъде в „строг“ режим, също оказа влияние върху това как мога да използвам това. Бих искал да експериментирам повече и да последвам по-подробна публикация в блога.

Междувременно направих малко допълнително проучване относно използването на ключа на this , каторазгледах Mozilla Development Network. По-долу съм изброил основните употреби на this, ако искате да прочетете пълното описание на всеки случай на употреба, MDN предлага някои страхотни обяснения тук.

Глобален контекст:

В глобалния контекст на изпълнение (извън всяка функция):

  • this се отнася до глобалния обект, независимо дали е в строг режим или не.

Контекст на функцията:

Вътре във функция стойността на thisзависи от това как се извиква функцията:

  • Просто обаждане:
  • Обадете се и кандидатствайте:
  • Методът на свързване
  • Функции на стрелките
  • Като обектен метод
  • Като конструктор
  • Като манипулатор на DOM събития
  • В вграден манипулатор на събития