this

Описание, примеры

Оператор this возвращает ссылку на объект, являющийся текущим контекстом вызова. Это позволяет обращаться к свойствам "текущего" объекта: this.property.

Текущий объект не является жесткой фиксированным и зависит от контекста вызова функции. Он является, своего рода, скрытым параметром.

Есть четыре различных варианта его передачи.

Тип Способ this
неявно, через вызов метода object.method(...) object
явно, через call function.call(object,...) object
явно, через apply function.apply(object,...) object
неявно, через вызов new new constructor(...) новый, создаваемый объект

Если ни один из этих способов не задействован, то this указывает на глобальный объект: в браузере это window.

Это происходит при вызове функции без объекта: myFunc(params).

При манипуляциях с DOM при помощи javascript, this обычно используется для работы с событиями. При этом значение this указывает на текущий DOM-элемент, в контексте которого вызван обработчик.

Привязка методов

Так как this не привязано жестко к объекту, то можно привязывать один и тот же метод к любым классам.

Пример:
Выделить все
walk = function() { this.isWalking = true }
 
function Bird() { /*...*/ }
function Rabbit() { /*...*/ }
 
Bird.prototype.walk = Rabbit.prototype.walk = walk
 
new Bird().walk() // в обоих случаях
new Rabbit().walk() // this будет указывать на текущий объект

См. также