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]:
var x = this;
Попробуйте сами »
В строгом режиме, когда используется отдельно this, также относится к глобальному объекту [object Window]:
"use strict";
var x = this;
Попробуйте сами »
В функции this (по умолчанию)
В функции JavaScript собственная функция по умолчанию является обязательной для this.
Итак, в функции this относится к Глобальному объекту [object Window].
function myFunction() {
return this;
}
Попробуйте сами »
В функции this (строги режим)
JavaScript строги режим не допускает привязку по умолчанию.
Таким образом, при использовании в функции, в строгом режиме, this является undefined.
"use strict";
function myFunction() {
return this;
}
Попробуйте сами »
В событии 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); // Вернет "Щипунов Андрей"