2016-05-24 1 views
0

. Моя проблема такая же простая, как и название. У меня есть код, который вызывает вызов AJAX. Этот код похож на это (JSFiddle):«это» не определено в следующей области.

function Test() { 
    this.name = "U don't wanna know my name.."; 
} 
Test.prototype.ajax = function() { 
    $.ajax("url/path", data, function() { 
     alert(this.name); 
    }); 
}; 

var test = new Test(); 
test.ajax(); 

В этом случае this не определено. Я мог бы поместить следующий код перед вызовом AJAX и использовать его в вместо this:

var diz = this; 

мне было интересно, если есть другой способ использования this без создания новой переменной для нее.

+1

Обычно люди делают 'var that = this' или' var _this = this' или 'var self = this'. Дополнительная информация http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-context-inside-a-callback – nada

ответ

1

В этом случае это не определено.

this.name не определено (предполагается, что вы имели в виду это), поскольку это специфично для контекста функции. Внутри этого обработчика обратного вызова ajax this больше не принадлежало Test, оно принадлежало этой функции обратного вызова.

было интересно, есть ли другой способ использования этого, не создавая для него новую переменную .

Я не думаю, что без сохранения ссылки на родитель this (Test-х this) вы можете получить доступ к this, принадлежавшим более глобальному масштабу с области видимости функции.

+0

Если я изменю 'имя'' _this', выполните следующие действия: 'var _this = this;', также изменяется имя 'this'? Или только имя '_this'? –

+1

Вы не можете изменить 'this' – gurvinder372

+0

Я еще что-то подумал об этом, хотя .. Но спасибо anyways :) –

 Смежные вопросы

  • Нет связанных вопросов^_^