V tej vadnici boste s pomočjo primerov spoznali JavaScript za to ključno besedo.
V JavaScript se this
ključna beseda nanaša na objekt, kamor je poklicana.
1. to Inside Global Scope
Kadar this
se uporablja samostojno, se this
nanaša na globalni objekt ( window
objekt v brskalnikih). Na primer
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Tukaj this.name
je enako kot window.name
.
2. to funkcijo Inside
Ko this
se uporablja v funkciji, se this
nanaša na globalni objekt ( window
objekt v brskalnikih). Na primer
function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()
3. ta funkcija konstruktorja znotraj
V JavaScript se konstruktorske funkcije uporabljajo za ustvarjanje predmetov. Ko se funkcija uporablja kot konstruktorska funkcija, se this
nanaša na objekt, znotraj katerega se uporablja. Na primer
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
Izhod
Oseba (ime: "Jack") Jack
Tu se this
nanaša na predmet person1. Zato person1.name
nam daje Jack.
Opomba : Ko this
se uporablja z razredi ES6, se nanaša na objekt, znotraj katerega se uporablja (podobno kot funkcije konstruktorja).
4. ta metoda Inside Object
Ko this
se uporablja znotraj metode predmeta, se this
nanaša na objekt, v katerem leži. Na primer
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();
Izhod
(ime: "Jack", starost: 25 let, pozdrav: ƒ) Jack
V zgornjem primeru se this
nanaša na person
objekt.
5. to Notranja notranja funkcija
Ko dostopate this
do notranje funkcije (znotraj metode), se this
sklicuje na globalni objekt. Na primer
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();
Izhod
(ime: "Jack", starost: 25, pozdrav: ƒ) 25 Okno (…) nedefinirano
Tu se this
notranjost innerFunc()
nanaša na globalni objekt, ker innerFunc()
je znotraj metode.
Vendar se this.age
zunaj innerFunc()
nanaša na person
predmet.
6. to funkcijo Inside Arrow
Znotraj funkcije puščice se this
nanaša na nadrejeni obseg. Na primer
const greet = () => ( console.log(this); ) greet(); // Window (… )
Puščične funkcije nimajo svojih this
. Ko uporabljate this
funkcijo puščice, se this
sklicuje na njen nadrejeni objekt obsega. Na primer
const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack
Tu this.name
se hi()
funkcija znotraj nanaša na greet
objekt.
Funkcijo puščice lahko uporabite tudi za rešitev težave, undefined
ko imate funkcijo znotraj metode (kot je prikazano v primeru 5). Na primer
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();
Izhod
(ime: "Jack", starost: 25, pozdrav: ƒ) 25 (ime: "Jack", starost: 25, pozdrav: ƒ) 25
Tu innerFunc()
je definirana s pomočjo puščice. Vzame this
iz nadrejenega obsega. Zato this.age
daje 25 .
Ko se s puščico uporablja funkcija this
, se nanaša na zunanji obseg.
7. ta funkcija Inside s strogim načinom
Če this
se uporablja v funkciji s strogim načinom, this
je undefined
. Na primer
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Opomba : Pri uporabi this
znotraj funkcije s strogim načinom lahko uporabite klic funkcije JavaScript ().
Na primer
'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack
Ko prenesete this
s call()
funkcijo, greet()
se obravnava kot metoda this
predmeta (v tem primeru globalni objekt).