JavaScripti see

Selles õpetuses saate näidete abil õppida selle märksõna JavaScripti kohta.

JavaScriptis thisviitab märksõna objektile, kuhu seda kutsutakse.

1. see globaalne ulatus

Kui thiskasutatakse üksi, thisviitab globaalsele objektile ( windowbrauserites olevale objektile ). Näiteks,

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

Siin this.nameon sama mis window.name.

2. see seesmine funktsioon

Kui thisseda kasutatakse funktsioonis, thisviitab globaalsele objektile ( windowbrauserites olevale objektile ). Näiteks,

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

3. see sisemine konstruktori funktsioon

JavaScriptis kasutatakse objektide loomiseks konstruktori funktsioone. Kui funktsiooni kasutatakse konstruktori funktsioonina, thisviitab see objektile, mille sees seda kasutatakse. Näiteks,

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

Väljund

 Isik (nimi: "Jack") Jack

Siin thisviitab objektile person1. Sellepärast person1.nameannab meile Jack.

Märkus . Kui thisseda kasutatakse koos ES6 klassidega, viitab see objektile, milles seda kasutatakse (sarnaselt konstruktori funktsioonidega).

4. see objekti sees olev meetod

Kui thisseda kasutatakse objekti meetodi sees, thisviitab objektile, milles see asub. Näiteks,

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

Väljund

 (nimi: "Jack", vanus: 25, tervita: ƒ) Jack

thisViitab ülaltoodud näites personobjektile.

5. see sisemine funktsioon

Kui thissisenete sisemisse funktsiooni (meetodi sees), thisviitab globaalsele objektile. Näiteks,

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

Väljund

 (nimi: "Jack", vanus: 25, tervita: ƒ) 25 Aken (…) määratlemata

Siin viitab thissisemine globaalsele objektile, kuna see on meetodi sees.innerFunc()innerFunc()

Kuid this.ageväljaspool innerFunc()viitab personobjekti.

6. see noolenupp

Noolefunktsioon thisviitab vanema ulatusele. Näiteks,

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

Noolefunktsioonidel pole oma this. Kui kasutate noolefunktsiooni thissees, thisviitab see selle vanema ulatusega objektile. Näiteks,

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

Siin this.namesees hi()funktsiooni viitab greetobjekti.

Noolefunktsiooni abil saate lahendada undefinedka meetodi sees funktsiooni kasutamisel tekkiva probleemi olemasolu (nagu näites 5 näha). Näiteks,

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

Väljund

 (nimi: "Jack", vanus: 25, tervita: ƒ) 25 (nimi: "Jack", vanus: 25, tervita: ƒ) 25

Siin innerFunc()määratletakse noolefunktsiooni abil. See võtab thisoma vanema ulatusest. Seega this.ageannab 25 .

Noolefunktsiooni kasutamisel thisviitab see välisele ulatusele.

7. see sisemine funktsioon ranges režiimis

Kui thisseda kasutatakse range režiimiga funktsioonis, thison undefined. Näiteks,

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

Märkus . Kui kasutate thisranges režiimis funktsiooni, võite kasutada JavaScripti funktsiooni kõnet ().

Näiteks,

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

Kui teil läbida thiskoos call()funktsiooni greet()käsitletakse meetodit thisobjekti (globaalse objekti sel juhul).

Huvitavad Artiklid...