Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу найти ошибку, Не могу присвоить значение массиву 
V
    Опции темы
Diesel Draft
Дата 17.7.2007, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: -1
Всего: 5



Код

 function TCommand(name){
    this.name        = name;
    this.param        = new Array();
  
  this.func     = null;
  this.id       = 0;
    
    this.set = function(key, value){
        
      this.param[key] = value;
                  //alert('-- ' + Object.toJSON(this.param));
    }
  
    this.get = function(key){
      return this.param[key];
    }  
 }


Удалось присвоить только  this.name и то при инициализации

Код

comm = new TCommand('loadchat');
    comm.set('sid', sid);
    comm.func = this.recomm_loadchat;



функция set вызывается.

Помогите, а  то уже глаза болят искать


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Zeroglif
Дата 17.7.2007, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Diesel Draft

в показанном коде всё нормально, свойства к объекту comm цепляются, только при вызове в comm.set() вторым аргументом передаётся неизвестно что (некто sid)...
PM MAIL WWW   Вверх
Diesel Draft
Дата 17.7.2007, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: -1
Всего: 5



ставлю алерты, аргументы передаются. Заметь что func тоже нет


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Zeroglif
Дата 17.7.2007, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(Diesel Draft @  17.7.2007,  02:04 Найти цитируемый пост)
ставлю алерты, аргументы передаются. Заметь что func тоже нет

Что вижу, то и кладу в консоль Firebug-а и Maxthon-a для проверки. Остальной код остался за кадром, может он тебе и мешает, мне не видно. То, что нет func - не важно, ты же описал совсем другие проблемы.

Код

 function TCommand(name){
    this.name  = name;
    this.param = new Array();
    this.func  = null;
    this.id    = 0;   
    this.set = function(key, value) {
        this.param[key] = value;
    }
    this.get = function(key){
      return this.param[key];
    }  
 }

 //-> создали объект, навешали ему свойства
 comm = new TCommand('loadchat');
 //-> смотрим на эти свойства
 alert(f(comm));
 //-> добавим свойство массиву
 comm.set('sid', 'preved medved');
 //-> посмотрим на это свойство
 alert(comm.get('sid'));
 
 //-> функция, чтоб потестить наличие свойств
 function f(o) {
    var a = [];
    for (var i in o) {
        a[a.length] = [i,':',o[i],'(', typeof o[i],')'].join(' ');
    }
    return a.join('\n\n');
 }

PM MAIL WWW   Вверх
Diesel Draft
Дата 17.7.2007, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: -1
Всего: 5



Открываю сверх секретные данные smile

Я не могу понять почему оно не пашет. Найди comm = new TCommand('loadchat');  это начало

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Untitled1.rar 1,39 Kb


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Zeroglif
Дата 17.7.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Diesel Draft

хех... переноси в тему про библиотеки... раз у тебя там prototype.js подгружается, у меня алерты нормально работают до запроса index.php5, а как там дальше разбирать - не ведаю.
PM MAIL WWW   Вверх
Diesel Draft
Дата 17.7.2007, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: -1
Всего: 5



Firebug тоже говорит что все ок :(

Но делаю так

Код


 comm = new TCommand('loadchat');
comm.set('sid', sid);
comm.func = this.recomm_loadchat;

alert('__ ' + Object.toJSON(comm)); 



И оно выводит все кроме параметров и func 

Это сообщение отредактировал(а) Diesel Draft - 17.7.2007, 19:34


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Diesel Draft
Дата 18.7.2007, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: -1
Всего: 5



Я здесь кажется баг обнаружил. Делаю так:

Код


 function TCommand(name){
    this.name        = name;
    this.param        = ["blablabla"];
  
  this.func     = null;
  this.id       = 0;
    
    this.set = function(key, value){
        
      this.param[key] = value;
      
    }
  
    this.get = function(key){
      return this.param[key];
    }  
 }


 ...........

    box = new TMailBox();
  
    comm = new TCommand('loadchat');
    comm.set('sid', sid);
    comm.set('sid2', sid);  
    
    comm.param['fgf']  = 'dfdf';
    
    comm.func = this.recomm_loadchat




результат на картинке. Я в шоке. Что делать?

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  __________.JPG 17,94 Kb


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Diesel Draft
Дата 18.7.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: -1
Всего: 5



ау, это безнадежно? 

ап


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Diesel Draft
Дата 18.7.2007, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: -1
Всего: 5



А когда делаю 
Код

comm.set(1, sid);


То он добавляет. Такое ощущение что все ассоциативные ключи оно считает как пропертю. Что за глюк. Есть метод через который можно присвоить значение массиву по ключу?


Через 5 мин:

Поставил заместь 
Код

this.param        = new Array();


Код

this.param        = new Object();


Теперь все кажется ок. Но так не должно быть. И это что я сделал неправильно

Это сообщение отредактировал(а) Diesel Draft - 18.7.2007, 14:31


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
SelenIT
Дата 18.7.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Diesel Draft, так насколько мне известно, у массивов в JS и не может быть нечисловых ключей. Этим они и отличаются от хешей, роль которых в JS выполняют объекты...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Diesel Draft
Дата 18.7.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: -1
Всего: 5



В JS кажется может. Раньше я ж использовал их


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
SelenIT
Дата 18.7.2007, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Diesel Draft, в таком случае именно именованные проперти и должны получаться. Насколько я знаю, их можно назначать всему, кроме примитивов...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Diesel Draft
Дата 18.7.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: -1
Всего: 5



Думаю это я затупил, спасибо что помог разобраться.

Это сообщение отредактировал(а) Diesel Draft - 18.7.2007, 15:30


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Zeroglif
Дата 18.7.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(SelenIT @  18.7.2007,  15:05 Найти цитируемый пост)
насколько мне известно, у массивов в JS и не может быть нечисловых ключей

Массивы суть те же объекты, которым просто дали больше власти и плётку по имени length. Если под ключом подразумевать свойство, то там может быть много чего, на выходе сработает конвертация в строковое представление. Массиву нужно тупо отличить обычное свойство от индекса, то есть свойства P, удовлетворяющего условию: P равно ToString(ToUint32(P)) с учётом максимального размера.

Код

var a = [];

a[0]            = 0;
a['1']          = 1;
a[false]        = 2;
a[null]         = 3;
a[undefined]    = 4;
a[[1,2,3]]      = 5;
a[{}]           = 6;
a[function(){}] = 7;
a[a]            = 8;
a[/\d/g]        = 9;

//->в итоге добавляем 10 новых свойств, из них только 2 являются индексами

PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0898 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.