Оператор 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 будет указывать на текущий объект