U ovom ćete uputstvu uz primjere naučiti o JavaScript-ovoj ključnoj riječi.
U JavaScript-u this
ključna riječ odnosi se na objekt gdje se zove.
1. ovaj Inside Global Scope
Kada this
se koristi sam, this
odnosi se na globalni objekt ( window
objekt u preglednicima). Na primjer,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Ovdje this.name
je isto što i window.name
.
2. ova Unutarnja funkcija
Kada this
se koristi u funkciji, this
odnosi se na globalni objekt ( window
objekt u preglednicima). Na primjer,
function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()
3. ovu funkciju unutarnjeg konstruktora
U JavaScriptu se konstruktorske funkcije koriste za stvaranje objekata. Kada se funkcija koristi kao konstruktorska funkcija, this
odnosi se na objekt unutar kojeg se koristi. Na primjer,
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
Izlaz
Osoba (ime: "Jack") Jack
Ovdje se this
odnosi na objekt person1. Zato person1.name
nam daje Jack.
Napomena : Kada this
se koristi s ES6 klasama, odnosi se na objekt unutar kojeg se koristi (slično funkcijama konstruktora).
4. ova metoda unutarnjeg objekta
Kada this
se koristi unutar metode objekta, this
odnosi se na objekt u kojem se nalazi. Na primjer,
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();
Izlaz
(ime: "Jack", dob: 25 godina, pozdrav: ƒ) Jack
U gornjem primjeru this
odnosi se na person
objekt.
5. ova Unutarnja unutarnja funkcija
Kada pristupite this
unutarnjoj funkciji (unutar metode), this
odnosi se na globalni objekt. Na primjer,
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();
Izlaz
(ime: "Jack", dob: 25, pozdrav: ƒ) 25 Prozor (…) nedefiniran
Ovdje se this
iznutra innerFunc()
odnosi na globalni objekt jer se innerFunc()
nalazi unutar metode.
Međutim, this.age
van se innerFunc()
odnosi na person
objekt.
6. ovu funkciju Inside Arrow
Unutar funkcije strelice this
odnosi se na nadređeni opseg. Na primjer,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Funkcije strelica nemaju svoje this
. Kada koristite this
unutar funkcije strelice, this
odnosi se na njezin nadređeni objekt opsega. Na primjer,
const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack
Ovdje se this.name
unutar hi()
funkcije odnosi na greet
objekt.
Funkciju strelice možete koristiti i za rješavanje problema s undefined
korištenjem funkcije unutar metode (kao što je prikazano u primjeru 5). Na primjer,
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();
Izlaz
(ime: "Jack", dob: 25, pozdrav: ƒ) 25 (ime: "Jack", dob: 25, pozdrav: ƒ) 25
Ovdje innerFunc()
se definira pomoću funkcije strelice. Preuzima this
iz roditeljskog opsega. Dakle, this.age
daje 25 .
Kada se upotrebljava funkcija strelice this
, odnosi se na vanjski opseg.
7. ovo Unutarnja funkcija sa strogim načinom rada
Kada this
se koristi u funkciji sa strogim načinom, this
je undefined
. Na primjer,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Napomena : Kada koristite this
unutar funkcije sa strogim načinom rada, možete koristiti poziv funkcije JavaScript ().
Na primjer,
'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack
Kada proslijedite this
s call()
funkcijom, greet()
tretira se kao metoda this
objekta (u ovom slučaju globalni objekt).