JavaScript This
Пример
var person = {
firstName: "Щипунов",
lastName : "Андрей",
id :5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
Попробуйте сами »
Что за this?
JavaScript Ключевое слово this
относится к объекту, к которому оно принадлежит.
Оно имеет разные значения в зависимости от того, где оно используется:
- В методе
this
относится к собственному собственному. - В одиночку
this
относится к глобальному объекту. - В функции
this
относится к глобальному объекту. - В функции в строгом режиме
this
являетсяundefined
. - В событии
this
относится к элементу, который получил событие. - Такие методы, как
call()
иapply()
, могут относиться кthis
к любому объекту.
В методе this
В методе объекта this
относится к "собственному" метода.
В примере в верхней части этой страницы this
относится к объекту person.
Объект person является собственным методом fullName.
fullName : function() {
return this.firstName + " " + this.lastName;
}
Попробуйте сами »
В одиночку this
При использовании в одиночку this является собственным глобальный объект, поэтому он this
относится к глобальному объекту.
В окне браузера глобальный объект [object Window]
:
В строгом режиме, когда используется отдельно this
, также относится к глобальному объекту [object Window]
:
В функции this (по умолчанию)
В функции JavaScript собственная функция по умолчанию является обязательной для this
.
Итак, в функции this
относится к Глобальному объекту [object Window]
.
В функции this (строги режим)
JavaScript строги режим не допускает привязку по умолчанию.
Таким образом, при использовании в функции, в строгом режиме, this
является undefined
.
В событии this
В обработчиках событий HTML this
относится к элементу HTML, который принял событие:
Пример
<button onclick="this.style.display='none'">
Нажмите, чтобы удалить меня!
</button>
Привязка метода объекта
В этих примерах this
это объект person (объект person является "владельцем" функции):
Пример
var person = {
firstName : "Щипунов",
lastName : "Андрей",
id :5566,
myFunction : function() {
return this;
}
};
Попробуйте сами »
Пример
var person = {
firstName: "Щипунов",
lastName : "Андрей",
id :5566,
fullName : function() {
return this.firstName + " " +
this.lastName;
}
};
Попробуйте сами »
Другими словами: this.firstName означает свойство firstName этого (person) объекта.
Явная привязка функций
В call()
и apply()
методы JavaScript предопределены.
Оба они могут использоваться для вызова метода объекта с другим объектом в качестве аргумента.
Вы можете узнать больше call()
и apply()
позже в этом руководстве.
В приведенном ниже примере при вызове person1.fullName с аргументом person2 this
будет относится на person2, даже если это метод person1:
Пример
var person1 = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person2 = {
firstName:"Щипунов",
lastName: "Андрей",
}
person1.fullName.call(person2); // Вернет "Щипунов Андрей"