2012-04-19 4 views
-2

В JavaScript я создал класс пользователя. Я написал метод (функцию), но я не могу дать оператор return. Вот мой класс:Оператор возврата объекта JavaScript JavaScript

function User() { 
    var isLogedIn = "FukkaMukka"; 
    var mail = ""; 
    var name = ""; 

    //functions 

    this.isLogedInFn = function(callback) { 
     $.post("controller.php?module=login&action=test", function(e) { 
      this.isLogedIn = false; // Here i can't reach the object variable.. why? 
      return e; 
     }) 
    } 
    this.logIn = logIn; 

} 
+0

Возможный дубликат: [Переменный охват: this.remove не является функцией] (http://stackoverflow.com/questions/3754273/variable-scope-this-remove-is-not-a-function) – JJJ

+2

Я удивился, никто не сказал об этом, но ... ** возврат внутрь $ .post бесполезен **, потому что он работает «асинхронно». Кроме того, 'isLoggedIn' является правильной орфографией ;-) –

+1

О, также я« закрываю как не настоящий вопрос », потому что никаких подробностей о том, что такое фактическая проблема *, дано, и никаких * конкретных вопросов * об этой проблеме было спросил. Если бы они были, это можно было бы назвать одним из миллионов дубликатов :( –

ответ

1

Обратный вызов не выполняется в context вашего объекта. Несколько способов обойти:

  • вызова jQuery.ajax с параметром context
  • bind() вашей функция к объекту
  • сохранить ссылку на ваш объект в переменном использовании, (как Сарфраз предложило)
0
function User() { 
    var isLogedIn = "FukkaMukka"; 
    var mail = ""; 
    var name = ""; 
    var self = this; 
    //functions 

    this.isLogedInFn = function(callback) { 
     $.post("controller.php?module=login&action=test", function(e) { 
      // `this` is no longer in the scope of the function as you would think it would be. in this case `this` iirc will reference the window object. 
      self.isLogedIn = false; 
      return e; 
     }) 
    } 
    this.logIn = logIn; 

} 

см. Комментарии в коде.

+0

Я изменил «это» на «я», но не работал ... – tthlaszlo

+0

вам также нужно определить 'self' ... см. Декларацию выше' // functions' – rlemon

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