Pull to refresh

Comments 12

function Loader()
{
    this.load = function()
    {
		var $$ = this;
        $.ajax({
            url: '/test.php',
            success: function(data, textStatus, jqXHR) {
                console.log(this);
				console.log($$):
            }
        });
    }
}
(new Loader()).load();


можно так, хоть и не красиво
В jQuery.ajax() можно передать параметр context, который будет контекстом для функций-обработчиков
В случае AJAX прекрасно сработает добавление "context: this". В этом случае внутри метода «success» «this» — это и будет наш Loader.
Если вы используете jQuery — то в ней уже есть спец. метод для этого — jQuery.proxy().
Тоже недоумевал над изобретением велосипеда.
Выше уже написали про это. Не заметил. Я буду читать комментарии перед тем как постить новый. Я буду.
В jQ есть $.proxy
$.get('.', $.proxy(function () {
    console.log(this.pewpew);
}, {pewpew:"ololo"}));

PS предпочитаю сохранять ссылку на this в родительском [scope] — так код выглядит гораздо чище
var self = {pewpew:"ololo"};

$.get('.', function () {
    console.log(self.pewpew);
});
Первые шаги в джаваскрипте. Открываем для себя бинд.
Помимо apply есть call, если просто передать this, то можно юзать гео и не будет мороки с массивами.

Но вообще тема избитая, и совершенно не имеет никакого дела к синхронности и асинхронности, ну никакого!

Ведь this подменяет не потому, что мы ajax запрос делаем, а потому, что такова реализации jquery. Так что не надо тапочки с анасами путать, то есть ajax, jquery и контекст. Хотите поговорить о вызове функций и конектесе это одно, ajax — другое, jquery третье.
Sign up to leave a comment.

Articles