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