AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Задание параметра "this" для callback-функций


При динамическом назначении обработчиков событий (в DHTML или в асинхронных вызовах типа AJAX), очень часто требуется каким-то образом передать в callback-функцию дополнительные параметры. Как минимум, часто бывает желательно, чтобы внутри функции параметр this имел определённое значение. Каждый, кто пытался использовать this в таких функциях, знает, что он может указывать куда угодно, но только не на тот объект, что нужен. Эта проблема может быть решена следующим образом:

Ссылка1 для проверки

Ссылка2 для проверки



Исходный код этого примера:

<p><a id="aaa" href="/java/">Ссылка1 для проверки</a></p>
<p><a id="aaa2" href="/php/">Ссылка2 для проверки</a></p>

<script type="text/javascript">
Function.prototype.bind = function(object) {
    var method = this;
    return function() {
        return method.apply(object, arguments)
    }
}
l=document.getElementById("aaa");
l2=document.getElementById("aaa2");
addEvent(l, "click", function() { alert(this.href); return false;}.bind(l2));
addEvent(l2, "click", function() { alert(this.href); return false;}.bind(l2));
</script>



В этом примере this внутри функции-обработчика будет указывать на link. Точно так же можно передать в callback указатель на любой другой нужный объект.

Функция addEvent описана здесь: addEvent.

Пояснение к функции applay: Синтаксис

var result = function.apply(thisArg[, argsArray]);
Аргументы
thisArg - Задает значение this внутри функции.
argsArray - Массив аргументов, с которыми будет вызвана функция, или null/undefined для вызова без аргументов.

Пояснение к функции arguments:

arguments - переменная, доступная внутри функции и содержащая аргументы и ссылку на саму функцию.


.

© Copyright 2008-2016 by KDG