Оператор this возвращает ссылку на объект, являющийся текущим контекстом вызова. Это позволяет обращаться к свойствам "текущего" объекта: this.property.
Текущий объект не является жесткой фиксированным и зависит от контекста вызова функции. Он является, своего рода, скрытым параметром.
Есть четыре различных варианта его передачи.
| неявно, через вызов метода |
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 будет указывать на текущий объект
Здравствуйте, А как быть с многоуровневыми объектами?
Точнее: как получить доступ к старшему объекту?
Допустим:
var o= { subO: { f: function () { this // Вернёт subO // А как получить, например o? } } }Если ничего не путаю, необходимо будет обращаться напрямую. чтобы получить subO в f, необходимо обращаться как o.subO, и так далее.
ti durak???? schtole????///<?php
echo "debil";
?>
козломордые сучаторы
Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.