Докато изучавам 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 събития
- В вграден манипулатор на събития