JavaScript Ключевое слово "this"
Пример
var person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
Попробуйте сами »
Что за this?
Ключевое слово this JavaScript относится к объекту, которому оно принадлежит.
Он имеет разные значения в зависимости от того, где он используется:
- В методе
thisотносится к объекту-владельцу. - Один
thisотносится к глобальному объекту. - В функции
thisотносится к глобальному объекту. - В функции в строгом режиме
thisестьundefined. - В событии
thisотносится к элементу, получившему событие. - Такие методы, как
call()иapply(), могут относитьсяthisк любому объекту.
В методе this
В методе объекта this относится к "владельцу" метода.
В примере в верхней части этой страницы this относится к объекту person.
Объект person является владельцем от fullName метода.
fullName : function() {
return this.firstName + " " + this.lastName;
}
Попробуйте сами »
Один this
При использовании отдельно владельцем является глобальный объект,
поэтому он this относится к глобальному объекту.
В окне браузера глобальный объект [object Window]:
В строгом режиме, когда используется отдельно this,
также относится к глобальному объекту [object Window]:
В функции (по умолчанию) this
В функции JavaScript владельцем функции является привязка по умолчанию
для this.
Итак, в функции this ссылается на глобальный объект
[object Window].
В функции (строги режим) this
JavaScript строги режим не допускает привязку по умолчанию.
Таким образом, при использовании в функции, в строгом режиме, this есть undefined.
В обработчиках событий this
В обработчиках событий HTML this относится к элементу HTML, получившему событие:
Привязка метода объекта
В этих примерах this это объект person (объект person является "владельцем" функции):
Пример
var person = {
firstName : "John",
lastName : "Doe",
id : 5566,
myFunction : function() {
return this;
}
};
Попробуйте сами »
Пример
var person = {
firstName: "John",
lastName : "Doe",
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:"John",
lastName: "Doe",
}
person1.fullName.call(person2); // Вернет "John Doe"
