Nepiesaistītas funkcijas konteksts JavaScript
Paskatīsimies, kas notiks, ja funkcijā
norādīsiet this, bet nepiesaistīsiet to
nevienam elementam, šādi:
function func() {
console.log(this);
}
func();
Šajā gadījumā rezultāts ir atkarīgs no tā,
vai mums ir ieslēgts
stingrais režīms
vai nē. Ja režīms nav stingrs,
tad this glabāsies saite uz
window:
function func() {
console.log(this); // saite uz logu window
}
func();
Bet, ja režīms ir stingrs, tad this
glabāsies undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
No iepriekš minētā varētu šķist, ka
stingrajā režīmā this vienmēr būs
undefined. Nemaz tā nav! Ja vienkārši
izvadīsiet this ārpus funkcijas, tad tajā
būs saite uz window neatkarīgi
no režīma:
"use strict";
console.log(this); // this satur saiti uz window
Secinājumi
Jebkurā funkcijā var rakstīt this,
tas neizraisīs kādas kļūdas JavaScript.
Bet, kas tieši atradīsies šajā this
nav noteikts līdz funkcijas izsaukuma brīdim.
Turklāt dažādos funkcijas izsaukumos this
var iegūt dažādas vērtības. Viss atkarīgs
no konteksta, kurā funkcija tika izsaukta.