co je "toto" v JavaScriptu?

Úvod

Když spustíme náš kód v JavaScriptu, vytvoří se Global Execution Context (GBE). Ale spolu s GBE i Global objekt a this vytvoří se také klíčová slova. Ale co jsou Global objekt a this klíčové slovo, o kterém zde mluvíme? Takže, pojďme prozkoumat, zde Global Objekt odkazuje na window objekt a this je klíčové slovo, které odkazuje na tento window objekt v globálním prostoru, tj. v globálním prostoru window === this . Pokud tedy napíšeme window === this v console dostaneme true jako výstup. Ale chování this se mění podle toho, kde je vyvolán. Pojďme tedy prozkoumat, jak se chová na různých místech.

vyvoláním this v globálním prostoru nebo samostatně

Když napíšete console.log(this) ve vašem javascriptovém programu a zkontrolujte jej v console , uvidíte, že se jedná o Window objekt. Takže v globálním prostoru this odkazuje na Window .

vyvoláním this uvnitř funkce

Takže, co si myslíte, když vyvoláme this uvnitř funkce? Napíšeme tedy pár řádků a uvidíme

function func(){
console.log(this);
}
func();

Zde to také odkazuje na objekt Window, ale proč? Protože zde je funkce func vlastností Global tj. Window objekt. Zde tedy můžeme také říci, zda zavoláme this ve funkci jako - this odkazuje na objekt, jehož je tato funkce vlastností . Nebojte se, pokud jste to ještě nepochopili, věřte mi, že to pochopíte v další části.

vyvolání tohoto v objektu

Udělejme tedy objekt a vyvolejme to uvnitř.

const data = {
firstName : 'Sobit',
lastName : 'Prasad',
fullName : function(){
     return this.firstName + " " +this.lastName;
     }
}
console.log(data.fullName());

// Output : Sobit Prasad

Takže zde bude výstup Sobit Prasad . Zde uvnitř objektu data vyvolali jsme tuto vnitřní funkci fullName a funkce fullName je vlastnost objektu data a proto zde this odkazuje na data objekt a ne Window objekt. Pojďme to pochopit hlouběji pomocí dalšího příkladu.

 const data1 = {
            firstName: 'Sobit',
            lastName: 'Prasad',
            fullName: function () {
                return this.firstName + " " + this.lastName;
            }
        }
 const dataOne = data1.fullName;
 const data2 = {firstName: 'Mohit', lastName: 'Sharma', dataOne };
 console.log(data2.dataOne());

//Output : Mohit Sharma

Ve výše uvedeném programu i přes deklaraci funkce fullName uvnitř objektu data1 , dostaneme výstup jako Mohit Sharma , protože v době vyvolání dataOne je vlastnost objektu data2 .

this pod use strict

 "use strict"
        function data(){
            console.log(this);
        }
        data();

//Output : undefined

Když zahrneme use strict v našem programu neumožňuje výchozí vazbu a tak dostáváme undefined .

Tak, to je vše pro lidi na tomto blogu. Budu velmi rád, když mi dáte vědět nějaké návrhy/opravy v některém z mých článků na blogu. Pokud považujete tento článek za užitečný, pozdravte mě na LinkedIn 🌸