Ve většině objektově orientovaných programovacích jazyků má klíčové slovo 'this' zvláštní význam. Obvykle označuje objekt, který je kontextem provádění (tj. aktuální instanci objektu). Používáme ho například při odkazování na vlastnost objektu zevnitř: napíšeme this.propertyName, kontextem je pak objekt a this odkazuje na něj.
'this'v JavaScript
Na adrese JavaScript je to složitější, protože tam, kde tento závisí nejen na tom, jak je funkce definována, ale také na formě jejího volání.
Podívejte se, jak tento funguje v závislosti na místě a formě vyvolání.
Globální kontext
Používá se v globálním kontextu vázaném na globální objekt, jako např. okno ve webovém prohlížeči.
this; // okno
Uvnitř metody objektu
Používá se uvnitř metody objektu vázané na nejbližší obklopující objekt. Tento objekt je novým kontextem tento klíčové slovo. Všimněte si, že byste neměli měnit funkce () na syntaxi ES6 fun: () => this.context protože změní kontext.
Používá se uvnitř funkce, která nemá žádný kontext (nemá žádný objekt jako rodiče) vázaný na globální kontext, i když je funkce definována uvnitř objektu.
Všimněte si, že používáme var context místo let/const context protože nechat a const změnit kontext připojené proměnné. var je vždy nejblíže globálnímu kontextu provádění. nechat a const deklarovat proměnné pouze v lokálním oboru bloku.
call() a apply() jsou JavaScript funkce. Pomocí nich může objekt používat metody patřící jinému objektu. call() přijímá argumenty samostatně, kde apply() je přebírá jako pole.
tento je zde vázán na nový kontext změněný v call() a apply() metody.
Používá se v jakékoli obsluze události (například, addeventListener, onclick, attachEvent), je svázána s prvkem DOM, ke kterému byla událost připojena.
document.querySelector(".foo").addEventListener("click", function() {
this; // odkazuje na prvek div `foo`
});
Funkce ES6 arrow
Při použití uvnitř funkce arrow je vždy vázán na její lexikální obor. Ve funkci arrow nelze znovu přiřadit funkci tento jakýmkoli způsobem.