proxy()

Если у Вас есть функция как свойство объекта, и эта функция использует другое свойство объекта, то Вы не можете вызвать данную функцию из другой функции и получить правильный результат. Давайте посмотрим на пример, чтобы разобраться:
var person = {  
  name : "Андрей",  
  meet : function () {  
    alert('Привет! Меня зовут ' + this.name);  
  }  
};  
person.meet();  
$('#test').click(person.meet);

Сама по себе, person.meet() выполняет alert правильно. Но когда она вызывается обработчиком события, то выводит "“Привет! Меня зовут undefined". Происходит так потому, что функция вызывается из другого контекста. Чтобы исправить ситуацию, мы можем использовать функцию proxy():
$('#test').click($.proxy(person.meet, person));  
// Так же можно использовать $.proxy(person, "meet")

Первый параметр функции proxy - метод для выполнения. Второй параметр - контекст, в котором следует ее выполнять. Альтернативно мы можем передать сначала передать контекст, а затем строку с именем метода. Теперь функция выполняется правильно.
Теги:
proxy
Добавлено: 18 Апреля 2018 15:47:47 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...