Используется для сохранения ссылки на this
.Позже в коде есть вызов AJAX с обратным вызовом (например).Таким образом, внутри этого обратного вызова this
не то же самое, что снаружи.Вот почему люди копируют «внешнюю» this
в переменную.
Лично мне нравится использовать эту форму:
var that = this;
выглядит смешно:)
ПоКстати, CoffeeScript , который является своего рода «правильным JavaScript», также исправляет это.
Он имеет две формы для определения функции, тонкую стрелку и жирную стрелку.Тонкая стрелка ведет себя точно так же, как в javascript, а толстая стрелка автоматически связывает this
со значением из внешнего контекста.
Итак, этот кофейный скрипт
Account = (customer, cart) -> # thin arrow
@customer = customer
@cart = cart
$('.shopping_cart').bind 'click', (event) => # fat arrow
@customer.purchase @cart
преобразуется в этот JavaScript
var Account;
Account = function(customer, cart) {
var _this = this;
this.customer = customer;
this.cart = cart;
return $('.shopping_cart').bind('click', function(event) {
return _this.customer.purchase(_this.cart);
});
};
Круто, не правда ли?