Изменение контекста функции
По заданной функции, создает другую такую же, внутри которой переменная this будет равна заданному значению.
function — функция, у которой будет установлено значение this.
context — объект, который будет помещен в this.
context — объект, который будет помещен в this.
name — имя метода объекта context. У этого метода и будет изменен this (на context).
arg1, arg2, ... — значения, которые будут переданы методу name в качестве аргументов.
jQuery.proxy() незаменим, если вы хотите, чтобы переменная this внутри функции была прочно связана с определенным значением (обычно она зависит от контекста вызова). Это может быть очень удобно, при установке обработчиков событий (см. пример). Надо отметить, что если вы устанавливаете в качестве обработчика событий функцию, полученную с помощью jQuery.proxy(), то удалить ее можно указав как саму эту функцию, так и ее оригинал.
Пример
Допустим, нам нужно установить обработчик нажатия кнопкой мыши, который должен сработать только один раз. Установим в качестве такого обработчика функцию, которая по совместительству является методом объекта. Тогда, указав этот объект в качестве переменной this, мы сможем удалить функцию из обработчиков, внутри ее самой:
// создадим объект var obj = { name: "John", test: function() { alert( this.name ); $("#test").unbind("click", obj.test); } }; // в методе test, находящемся внутри объекта obj, присвоим obj значению this $("#test").click(jQuery.proxy(obj, "test")); // то же самое можно сделать с помощью другого варианта функции proxy(): $("#test").click( jQuery.proxy( obj.test, obj ) );