JavaScript this

W tym samouczku dowiesz się na temat tego słowa kluczowego w języku JavaScript na podstawie przykładów.

W JavaScript thissłowo kluczowe odnosi się do obiektu, w którym zostało wywołane.

1. niniejszy Inside Global Scope

Kiedy thisjest używane samodzielnie, thisodnosi się do obiektu globalnego ( windowobiektu w przeglądarkach). Na przykład,

 let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah

Tutaj this.namejest to samo co window.name.

2. ta funkcja wewnętrzna

Kiedy thisjest używane w funkcji, thisodnosi się do obiektu globalnego ( windowobiektu w przeglądarkach). Na przykład,

 function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()

3. ta funkcja konstruktora wewnętrznego

W JavaScript funkcje konstruktorów służą do tworzenia obiektów. Gdy funkcja jest używana jako funkcja konstruktora, thisodnosi się do obiektu, w którym jest używana. Na przykład,

 function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);

Wynik

 Osoba (imię: „Jack”) Jack

Tutaj thisodnosi się do obiektu person1. Dlatego person1.namedaje nam Jack.

Uwaga : gdy thisjest używany z klasami ES6, odnosi się do obiektu, w którym jest używany (podobnie do funkcji konstruktora).

4. ta metoda Inside Object

Kiedy thisjest używane wewnątrz metody obiektu, thisodnosi się do obiektu, w którym się znajduje. Na przykład,

 const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); console.log(this.name); ) ) person.greet();

Wynik

 (imię: „Jack”, wiek: 25 lat, pozdrawiam: ƒ) Jack

W powyższym przykładzie thisodnosi się do personobiektu.

5. ta funkcja wewnętrzna wewnętrzna

Kiedy uzyskujesz dostęp thisdo funkcji wewnętrznej (wewnątrz metody), thisodwołuje się do obiektu globalnego. Na przykład,

 const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); // (name: "Jack", age… ) console.log(this.age); // 25 // inner function function innerFunc() ( // this refers to the global object console.log(this); // Window (… ) console.log(this.age); // undefined ) innerFunc(); ) ) person.greet();

Wynik

 (imię: „Jack”, wiek: 25 lat, pozdrawiam: ƒ) 25 Okno (…) undefined

Tutaj thiswewnątrz innerFunc()odnosi się do obiektu globalnego, ponieważ innerFunc()znajduje się wewnątrz metody.

Jednak na this.agezewnątrz innerFunc()odnosi się do personobiektu.

6. ta funkcja strzałki wewnętrznej

Wewnątrz funkcji strzałkowej thisodwołuje się do zakresu nadrzędnego. Na przykład,

 const greet = () => ( console.log(this); ) greet(); // Window (… )

Funkcje strzałkowe nie mają własnych this. Kiedy używasz thiswewnątrz funkcji strzałkowej, thisodwołuje się do jej nadrzędnego obiektu zasięgu. Na przykład,

 const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack

Tutaj this.namewewnątrz hi()funkcja odnosi się do greetobiektu.

Możesz również użyć funkcji strzałki, aby rozwiązać problem posiadania undefinedfunkcji w metodzie (jak pokazano w przykładzie 5). Na przykład,

 const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); console.log(this.age); // inner function let innerFunc = () => ( // this refers to the global object console.log(this); console.log(this.age); ) innerFunc(); ) ) person.greet();

Wynik

 (imię: „Jack”, wiek: 25, powitanie: ƒ) 25 (imię: „Jack”, wiek: 25, powitanie: ƒ) 25

Tutaj innerFunc()definiuje się za pomocą funkcji strzałki. Bierze thisz zakresu nadrzędnego. Stąd this.agedaje 25 .

Kiedy funkcja strzałki jest używana z this, odnosi się do zakresu zewnętrznego.

7. ta funkcja wewnętrzna z trybem ścisłym

Kiedy thisjest używane w funkcji z trybem ścisłym, thisjest undefined. Na przykład,

 'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined

Uwaga : Używając thisfunkcji w trybie ścisłym, możesz użyć wywołania funkcji JavaScript ().

Na przykład,

 'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack

Kiedy przekazujesz thisz call()funkcją, greet()traktowany jest jako metoda thisobiektu (w tym przypadku obiekt globalny).

Interesujące artykuły...