JavaScript tämä

Tässä opetusohjelmassa opit JavaScriptin avainsanasta esimerkkien avulla.

JavaScriptissä thisavainsana viittaa objektiin, johon sitä kutsutaan.

1. tämä Inside Global Scope

Kun thissitä käytetään yksin, thisviittaa globaaliin objektiin ( windowselainobjekti). Esimerkiksi,

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

Tässä this.nameon sama kuin window.name.

2. tämä sisäpuolinen toiminto

Kun thissitä käytetään funktiossa, thisviittaa globaaliin objektiin ( windowobjekti selaimissa). Esimerkiksi,

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

3. tämä sisärakentajan toiminto

JavaScriptissä rakenninfunktioita käytetään objektien luomiseen. Kun funktiota käytetään konstruktorifunktiona, thisviittaa esineeseen, jonka sisällä sitä käytetään. Esimerkiksi,

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

Tuotos

 Henkilö (nimi: "Jack") Jack

Tässä thisviittaa henkilö1-objektiin. Siksi person1.nameantaa meille Jack.

Huomaa : Kun thissitä käytetään ES6-luokkien kanssa, se viittaa esineeseen, jonka sisällä sitä käytetään (samanlainen kuin konstruktoritoiminnot).

4. tämä Inside Object -menetelmä

Kun thissitä käytetään objektin menetelmän sisällä, thisviittaa esineeseen, jossa se on. Esimerkiksi,

 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();

Tuotos

 (nimi: "Jack", ikä: 25, tervehdi: ƒ) Jack

Edellisessä esimerkissä thisviittaa personesineeseen.

5. tämä sisäpuolinen toiminto

Kun käytät thissisäisen toiminnon sisällä (menetelmän sisällä), thisviittaa globaaliin objektiin. Esimerkiksi,

 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();

Tuotos

 (nimi: "Jack", ikä: 25, tervehdys: ƒ) 25 Ikkuna (…) määrittelemätön

Tässä thissisällä innerFunc()tarkoittaa globaalia kohdetta, koska innerFunc()se on menetelmän sisällä.

Kuitenkin, this.ageulkopuolella innerFunc()viittaa personobjektin.

6. tämä sisäpuoli-nuolitoiminto

Nuolitoiminnon sisällä thisviittaa ylätason laajuuteen. Esimerkiksi,

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

Nuolitoiminnoilla ei ole omaa this. Kun käytät thisnuolitoimintoa, thisviittaa sen ylätason objektiin. Esimerkiksi,

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

Tässä toiminnon this.namesisällä hi()viitataan greetesineeseen.

Voit käyttää nuolitoimintoa myös ongelman ratkaisemiseen undefinedkäytettäessä toimintoa menetelmän sisällä (kuten esimerkissä 5 nähdään). Esimerkiksi,

 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();

Tuotos

 (nimi: "Jack", ikä: 25, tervehdys: ƒ) 25 (nimi: "Jack", ikä: 25, tervehdys: ƒ) 25

Tässä innerFunc()määritetään nuolitoiminnolla. Se ottaa thissen vanhemman laajuudesta. Näin ollen this.ageantaa 25 .

Kun nuolitoimintoa käytetään yhdessä this, se viittaa ulompaan laajuuteen.

7. tämä sisäinen toiminto tiukassa tilassa

Kun thissitä käytetään toiminnossa, jossa on tiukka tila, thison undefined. Esimerkiksi,

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

Huomaa : Kun käytät thisfunktiota tiukassa tilassa, voit käyttää JavaScript-toimintokutsu ().

Esimerkiksi,

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

Kun siirtää thiskanssa call()toiminto, greet()käsitellään menetelmällä thisobjektin (maailmanlaajuinen objekti tässä tapauksessa).

Mielenkiintoisia artikkeleita...