V tej vadnici boste s pomočjo primerov spoznali JavaScript za to ključno besedo.
V JavaScript se thisključna beseda nanaša na objekt, kamor je poklicana.
1. to Inside Global Scope
Kadar thisse uporablja samostojno, se thisnanaša na globalni objekt ( windowobjekt v brskalnikih). Na primer
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Tukaj this.nameje enako kot window.name.
2. to funkcijo Inside
Ko thisse uporablja v funkciji, se thisnanaša na globalni objekt ( windowobjekt 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 thisnanaš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 thisnanaša na predmet person1. Zato person1.namenam daje Jack.
Opomba : Ko thisse uporablja z razredi ES6, se nanaša na objekt, znotraj katerega se uporablja (podobno kot funkcije konstruktorja).
4. ta metoda Inside Object
Ko thisse uporablja znotraj metode predmeta, se thisnanaš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 thisnanaša na personobjekt.
5. to Notranja notranja funkcija
Ko dostopate thisdo notranje funkcije (znotraj metode), se thissklicuje 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 thisnotranjost innerFunc()nanaša na globalni objekt, ker innerFunc()je znotraj metode.
Vendar se this.agezunaj innerFunc()nanaša na personpredmet.
6. to funkcijo Inside Arrow
Znotraj funkcije puščice se thisnanaša na nadrejeni obseg. Na primer
const greet = () => ( console.log(this); ) greet(); // Window (… )
Puščične funkcije nimajo svojih this. Ko uporabljate thisfunkcijo puščice, se thissklicuje 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.namese hi()funkcija znotraj nanaša na greetobjekt.
Funkcijo puščice lahko uporabite tudi za rešitev težave, undefinedko 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 thisiz nadrejenega obsega. Zato this.agedaje 25 .
Ko se s puščico uporablja funkcija this, se nanaša na zunanji obseg.
7. ta funkcija Inside s strogim načinom
Če thisse uporablja v funkciji s strogim načinom, thisje undefined. Na primer
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Opomba : Pri uporabi thisznotraj 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 thiss call()funkcijo, greet()se obravnava kot metoda thispredmeta (v tem primeru globalni objekt).








