У цьому посібнику ви дізнаєтесь про JavaScript-ключове слово за допомогою прикладів.
У JavaScript 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. ця функція конструктора всередині
У JavaScript функції конструктора використовуються для створення об'єктів. Коли функція використовується як функція конструктора, this
посилається на об'єкт, всередині якого вона використовується. Наприклад,
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
Вихідні дані
Людина (ім'я: "Джек") Джек
Тут this
посилається на об'єкт person1. Ось чому, person1.name
дає нам Джек.
Примітка : Коли this
використовується з класами ES6, він посилається на об'єкт, всередині якого він використовується (подібно до функцій конструктора).
4. цей метод Inside Object
Коли 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. ця функція Inside Arrow
Усередині функції стрілки, 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
всередині функції зі строгим режимом ви можете використовувати виклик функції JavaScript ().
Наприклад,
'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack
Коли ви проходите this
з call()
функцією, greet()
розглядаються як метод в this
об'єкті (глобальний об'єкт в даному випадку).