ЈаваСцрипт ово

У овом упутству ћете научити о ЈаваСцрипт-овим кључним речима уз помоћ примера.

У ЈаваСцрипт-у, 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објекта (глобални објекат у овом случају).

Занимљиви Чланци...