2007-08-03

Различия реализации объекта Array языка JavaScript в браузерах

В данный момент работаю над приложением, где используются массивы с большим количеством данных, а т.к. JavaScript не специализирован на производительность, с ней появились некоторые проблемы.. Бороться решил хэкерскими методами, но в очередной раз сделал для себя небольшое открытие и потратил несколько времени на отыскание бага.. вот он..

// инициализируем массив
a = new Array();
a["a"] = 1;
a["b"] = 2;
a["c"] = 3;

// переписываем значение ячейки
delete(a["b"]);
a["b"] = 2;

m = "";
// перечисляем все элементы массива и выводим
for (i in a)
    m += i + " " + a[i] + "\n";

alert(m)

Результаты работы:
Internet Explorer 6.0
a 1
b 2
c 3

Opera 9.21, Firefox 2.0
a 1
c 3
b 2

Я надеялся на то, что в IE значение тоже перепишется в хэш-массиве на последнее место, но так не случилось, а жаль.. ушел читать MSDN.

Twitter Updates

Twitter Updates

    follow me on Twitter
    Hacker Key Creative Commons License
    2006