JavaScript это

В этом руководстве вы узнаете о ключевом слове this в JavaScript с помощью примеров.

В JavaScript thisключевое слово относится к объекту, из которого оно вызвано.

1. этот Inside Global Scope

Когда 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. Этот метод внутреннего объекта

Когда 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 Окно (…) undefined

Здесь thisinside 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внутри функции в строгом режиме вы можете использовать вызов функции JavaScript ().

Например,

 'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack

Когда вы переходите thisс call()функцией, greet()обрабатывается как метод thisобъекта (в данном случае глобальный объект).

Интересные статьи...