Selles õpetuses saate näidete abil õppida selle märksõna JavaScripti kohta.
JavaScriptis this
viitab märksõna objektile, kuhu seda kutsutakse.
1. see globaalne ulatus
Kui this
kasutatakse üksi, this
viitab globaalsele objektile ( window
brauserites olevale objektile ). Näiteks,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Siin this.name
on sama mis window.name
.
2. see seesmine funktsioon
Kui this
seda kasutatakse funktsioonis, this
viitab globaalsele objektile ( window
brauserites 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, this
viitab 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 this
viitab objektile person1. Sellepärast person1.name
annab meile Jack.
Märkus . Kui this
seda kasutatakse koos ES6 klassidega, viitab see objektile, milles seda kasutatakse (sarnaselt konstruktori funktsioonidega).
4. see objekti sees olev meetod
Kui this
seda kasutatakse objekti meetodi sees, this
viitab 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
this
Viitab ülaltoodud näites person
objektile.
5. see sisemine funktsioon
Kui this
sisenete sisemisse funktsiooni (meetodi sees), this
viitab 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 this
sisemine globaalsele objektile, kuna see on meetodi sees.innerFunc()
innerFunc()
Kuid this.age
väljaspool innerFunc()
viitab person
objekti.
6. see noolenupp
Noolefunktsioon this
viitab vanema ulatusele. Näiteks,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Noolefunktsioonidel pole oma this
. Kui kasutate noolefunktsiooni this
sees, this
viitab 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.name
sees hi()
funktsiooni viitab greet
objekti.
Noolefunktsiooni abil saate lahendada undefined
ka 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 this
oma vanema ulatusest. Seega this.age
annab 25 .
Noolefunktsiooni kasutamisel this
viitab see välisele ulatusele.
7. see sisemine funktsioon ranges režiimis
Kui this
seda kasutatakse range režiimiga funktsioonis, this
on undefined
. Näiteks,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Märkus . Kui kasutate this
ranges 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 this
koos call()
funktsiooni greet()
käsitletakse meetodit this
objekti (globaalse objekti sel juhul).