W tym samouczku dowiesz się na temat tego słowa kluczowego w języku JavaScript na podstawie przykładów.
W JavaScript this
słowo kluczowe odnosi się do obiektu, w którym zostało wywołane.
1. niniejszy Inside Global Scope
Kiedy this
jest używane samodzielnie, this
odnosi się do obiektu globalnego ( window
obiektu w przeglądarkach). Na przykład,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Tutaj this.name
jest to samo co window.name
.
2. ta funkcja wewnętrzna
Kiedy this
jest używane w funkcji, this
odnosi się do obiektu globalnego ( window
obiektu 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, this
odnosi 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 this
odnosi się do obiektu person1. Dlatego person1.name
daje nam Jack.
Uwaga : gdy this
jest 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 this
jest używane wewnątrz metody obiektu, this
odnosi 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 this
odnosi się do person
obiektu.
5. ta funkcja wewnętrzna wewnętrzna
Kiedy uzyskujesz dostęp this
do funkcji wewnętrznej (wewnątrz metody), this
odwoł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 this
wewnątrz innerFunc()
odnosi się do obiektu globalnego, ponieważ innerFunc()
znajduje się wewnątrz metody.
Jednak na this.age
zewnątrz innerFunc()
odnosi się do person
obiektu.
6. ta funkcja strzałki wewnętrznej
Wewnątrz funkcji strzałkowej this
odwoł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 this
wewnątrz funkcji strzałkowej, this
odwoł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.name
wewnątrz hi()
funkcja odnosi się do greet
obiektu.
Możesz również użyć funkcji strzałki, aby rozwiązać problem posiadania undefined
funkcji 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 this
z zakresu nadrzędnego. Stąd this.age
daje 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 this
jest używane w funkcji z trybem ścisłym, this
jest undefined
. Na przykład,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Uwaga : Używając this
funkcji 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 this
z call()
funkcją, greet()
traktowany jest jako metoda this
obiektu (w tym przypadku obiekt globalny).