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).








