JavaScript это ключевое слово
Пример
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
Что это ?
Ключевое слово JavaScript this
относится к объекту, которому оно принадлежит.
Он имеет разные значения в зависимости от того, где он используется:
- В методе
this
ссылается на объект-владелец . - В одиночку
this
относится к глобальному объекту . - В функции
this
ссылается на глобальный объект . - В функции в строгом режиме
this
естьundefined
. - В событии
this
относится к элементу , который получил событие. - Методы типа
call()
, иapply()
могут ссылатьсяthis
на любой объект .
это в методе
В объектном методе this
относится к « владельцу » метода.
В примере вверху этой страницы this
относится к объекту person .
Объект person является владельцем метода fullName .
fullName : function() {
return this.firstName + " " + this.lastName;
}
это один
При использовании отдельно владельцем является глобальный объект, поэтому он this
относится к глобальному объекту.
В окне браузера глобальный объект [object Window]
:
Пример
let x = this;
В строгом режиме , когда используется отдельно, this
также относится к объекту Global
[object Window]
:
Пример
"use strict";
let x = this;
это в функции (по умолчанию)
В функции JavaScript владельцем функции является привязка по умолчаниюthis
для .
Итак, в функции this
ссылается на глобальный объект [object Window]
.
Пример
function myFunction() {
return this;
}
это в функции (строгой)
Строгий режим JavaScript не разрешает привязку по умолчанию.
Итак, при использовании в функции в строгом режиме this
is undefined
.
Пример
"use strict";
function myFunction() {
return this;
}
это в обработчиках событий
В обработчиках событий HTML this
относится к элементу HTML, получившему событие:
Пример
<button onclick="this.style.display='none'">
Click to
Remove Me!
</button>
Связывание метода объекта
В этих примерах this
это объект person (объект person является «владельцем» функции):
Пример
const person = {
firstName : "John",
lastName : "Doe",
id : 5566,
myFunction : function() {
return this;
}
};
Пример
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " +
this.lastName;
}
};
Другими словами: this.firstName означает свойство firstName этого (человека) объекта.
Явное связывание функций
Методы call()
и apply()
являются предопределенными методами JavaScript.
Оба они могут использоваться для вызова метода объекта с другим объектом в качестве аргумента.
Вы можете прочитать больше об этом call()
и apply()
позже в этом руководстве.
В приведенном ниже примере при вызове person1.fullName с аргументом person2 this
будет ссылаться на person2, даже если это метод person1:
Пример
const person1 = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person2 = {
firstName:"John",
lastName: "Doe",
}
person1.fullName.call(person2); // Will return "John Doe"