У овом упутству ћете научити о ЈаваСцрипт-овим кључним речима уз помоћ примера.
У ЈаваСцрипт-у, this
кључна реч се односи на објекат где се зове.
1. овај Инсиде Глобал Сцопе
Када this
се користи сам, this
односи се на глобални објекат ( window
објекат у прегледачима). На пример,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Овде this.name
је исто што и window.name
.
2. ову унутрашњу функцију
Када this
се користи у функцији, this
односи се на глобални објекат ( window
објекат у прегледачима). На пример,
function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()
3. ова унутрашња функција конструктора
У ЈаваСцрипт-у се конструкторске функције користе за креирање објеката. Када се функција користи као конструкторска функција, this
односи се на објекат унутар којег се користи. На пример,
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
Оутпут
Лице (име: "Јацк") Јацк
Овде this
се односи на објекат персон1. Зато person1.name
нам даје Јацк.
Напомена : Када this
се користи са ЕС6 класама, односи се на објекат унутар којег се користи (слично функцијама конструктора).
4. овај метод унутрашњег објекта
Када this
се користи унутар методе објекта, this
односи се на објекат у коме се налази. На пример,
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();
Оутпут
(име: "Јацк", старост: 25 година, поздрав: ƒ) Јацк
У горњем примеру, this
односи се на person
објекат.
5. ову Унутрашњу унутрашњу функцију
Када приступате this
унутрашњој функцији (унутар методе), this
односи се на глобални објекат. На пример,
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();
Оутпут
(име: "Јацк", старост: 25, поздрав: ƒ) 25 Прозор (…) недефинисан
Овде се this
изнутра innerFunc()
односи на глобални објекат јер се innerFunc()
налази унутар методе.
Међутим, this.age
споља innerFunc()
се односи на person
објекат.
6. ову функцију Инсиде Арров
Унутар функције стрелице, this
односи се на надређени опсег. На пример,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Функције стрелица немају своје this
. Када користите this
унутар функције стрелице, this
односи се на њен родитељски објект опсега. На пример,
const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack
Овде this.name
се hi()
функција односи на greet
објекат.
Такође можете да користите функцију стрелице да бисте решили проблем који имате undefined
када користите функцију унутар методе (као што се види у примеру 5). На пример,
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();
Оутпут
(име: "Јацк", старост: 25, поздрав: ƒ) 25 (име: "Јацк", старост: 25, поздрав: ƒ) 25
Овде innerFunc()
се дефинише помоћу функције стрелице. Преузима се this
из родитељског опсега. Отуда this.age
даје 25 .
Када се користи функција стрелице this
, односи се на спољни опсег.
7. ову унутрашњу функцију са строгим режимом
Када this
се користи у функцији са строгим режимом, this
је undefined
. На пример,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Напомена : Када користите this
унутрашњост функције са строгим режимом, можете користити позив функције ЈаваСцрипт ().
На пример,
'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack
Када прођете this
са call()
функцијом, greet()
се третира као методом this
објекта (глобални објекат у овом случају).