Показать сообщение отдельно
  #5 (permalink)  
Старый 16.06.2011, 13:52
Новичок на форуме
Отправить личное сообщение для Йакуд Посмотреть профиль Найти все сообщения от Йакуд
 
Регистрация: 26.11.2010
Сообщений: 8

Лишний объект создал из-за того, что буду обращаться из объекта jQuery, а там this уже имеется. Это для своего удобства. Мне кажется, что лишний объект не сильно повлияет на быстродействие.
Цитата:
Про 2 раза не знаем, весь код не видели, мало ли чего вы намудрили.
Это и есть весь код, только без функции вывода ошибки и без инициализации нужных переменных. Но если на то пошло, то вот класс:
var User = function(id){
  var then = {};	
  then.id = id;	
	
  /* Основные переменные */
  then.phpGet = "./model/gb/js/user/user.php";
  then.errorMessage = {
    0: "Вы не имеете доступа к разделу!"
  };
  
  /* Получение информации о пользователе */
  then.getInfo = function(param){
	param.id = then.id;
	
	/* Запрос на сервер */
    $.get(then.phpGet, param, function(data){
	  /* Парсим данные */
	  var data = JSON.parse(data);
	  
	  /* Если ошибка, выводим сообщение */
	  if(data.error !== undefined){
	    then.showError(data.error);
	  }
	  else /* Добавляем к основному объекту принятые параметры */
	  {
	    for(var i in data)
		  then[i] = data[i];

		if(param.onComplete !== undefined && typeof(param.onComplete) == "function")
		   then.End(then);
	  }
	});
  }
  
  /* Функция вывода ошибки */
  then.showError = function(error_id){
    alert("Ошибка №" + parseInt(error_id+1) + "! " + then.errorMessage[error_id]);
  };
  
  return then;
};

Вот создание объекта:
var UserEnter_id = 1;

var yakud = new User(UserEnter_id);
yakud.getInfo({
  param :['nick', 'type'],
  End   :function(d){
    if(d !== undefined)
      alert(d)
  }
});

Вот так вот работает, а без
if(d !== undefined)
вызывается два раза. Нужно как-нибудь избавится от этого условия и чтобы функция, вызывалась только один раз. Если поставить условие в классе, то это погоды не сделает, т.к. я уже говорил, что функция вызывается точно только один раз.

Последний раз редактировалось Йакуд, 16.06.2011 в 14:05.
Ответить с цитированием