Насколько мне известно, массив - это список значений доступ к которым осуществляется по числовому индексу. Недавно натолкнулся на такой код:
var arr = [];
arr['test'] = 'string';
console.log(arr['test']);
Не могу понять что в этом случае происходит?
var arr = [];
arr['test'] = 'string';
console.log(arr.test);
console.log(Object.prototype.toString.call(arr.test));
console.log(Object.prototype.toString.call(arr));
console.log(arr.length);
Если создается именованное свойство у массива, то почему тогда его длина равна 0. Судя по тому что к свойству можно обращаться через точку arr теперь объект, но Object.prototype.toString.call говорит об обратном. Или же это поведение характерно массивам так же как функциям (им можно создавать свойства ) из за дальнего родственника в прототипе - Object.
Массивы являются объектами, поэтому любому массиву можно добавить свойство с не числовым именем.
Поэтому запись:
var arr = [];
arr['test'] = 'string';
Вполне допустима.
Но так как массив - это особенный объект, его методы и свойства рассчитаны на работу только со свойствами с числовыми именами.
Например, length - это свойство, значение которого должно быть больше любого числового индекса. Отсюда видно, что оно никак не связано с количеством элементов в массиве, не говоря уже про свойства с не числовыми именами.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Необходимо сделать, чтобы помимо основной функции, которая сейчас работает, в каждой строке массива количество его элементов увеличивалось...
Я новичекНикак не могу разобраться, как закрыть один div если нажимаем на другую кнопку