|
|
|
| К примеру имеется такой объект
<script>
var objectVar = {1:'doc1',3:'doc2'};
len = objectVar.length;
</script>
|
Я знаю что у меня 2 свойства, переменная len это показывает. К примеру мне надо удалить свойство которое содержит значение doc2. Я бы мог сделать это так...
но программа не знает какое это свойство имеет номер 1 или 3 или 199.
Вот хотел бы спросить, как мне можно обратиться к свойству по порядковому номеру? Чтобы выполнить что-то типа
delete objectVar.getProp(2);
|
чтобы удалить свойство "3" с значение 'doc2' | |
|
|
|
|
|
|
|
|
для: Deed
(15.12.2012 в 11:35)
| | Нужна хотя бы поддержка IE 8 | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(15.12.2012 в 04:06)
| | цитата:
------------------
<script>
var objectVar = {1:'doc1',3:'doc2'};
len = objectVar.length;
</script>
|
Я знаю что у меня 2 свойства, переменная len это показывает.
------------------(конец цитаты)
и как, интересно, ваша переменная len "это показывает"?
в каком из браузеров alert (len) покажет что-то, отличное от undefined?
метода, ПРЯМО определяющего количество свойств у объекта, НЕ СУЩЕСТВУЕТ
надо перебрать все свойства циклом for...in и подсчитать количество шагов цикла
----
свойства объектов не имеют "порядковых номеров"
и не могут их иметь в принципе
вот лично у вас, Гавриленко Дмитрий (как у человека-гражданинаобъекта), имеются свойства:
1) -- отчество
2) -- вес
3) -- имя
4) -- цвет глаз
5) -- фамилия
6) -- дата рождения
7) -- рост
8) -- национальность
9) -- цвет волос
10) -- вероисповедание
11) -- ваше отношение к наци-лидеру вэ-вэ-пуссину
...
|
и какой "порядковый номер" у вашей "национальности", например?
в типовых советских анкетах "национальность" шла пятым пунктом (отсюда выражение "инвалид пятой группы")
а я здесь специально прописал её пунктом номер 8
ну и какой "порядковый номер" у вашей национальности?
восьмой?
или zero-индексный седьмой?
или всё же, отдавая дань традициям, пятый?
------
свойства объектов в машинной памяти хранятся по довольно сложному алгоритму
приблизительно по такому:
-- свойства идут в том порядке, в котором присваивались в MSIEv<9, в Лисе и в Сафари
-- а вот в Опере, Хроме и MSIEv9+ ключи, которые можно привести к численному виду, преобразовываются в числа, сортируются по возрастанию и хранятся первыми, перед строковыми
и учтите, например, что свойство "отчество", установленное первым, может быть потом, после определения всех других свойств, удалено оператором delete, а затем заново установлено (либо значение ему будет переприсвоено без удаления)
каким теперь надо считать свойство "отчество"?
первым или же самым последним?
------
в общем, задача ваша бессмысленна по определению
напишите var objectVar = {3:'doc2',1:'doc1'};
и в Лисе "первым" у вас будет doc2, а в Опере, наоборот, doc1
а теперь же ещё имеется и Яндекс-браузер
и фиг его знает - как это организовано там
да, написано, что собран он по технологии Chromium
но у нас и Мерседесы по немецкой технологии собирают... а они потом не ездят :) | |
|
|
|
|
|
|
|
для: ЯСА
(16.12.2012 в 09:25)
| | Спасибо! Очень полезная информация. | |
|
|
|
|
|
|
|
для: ЯСА
(16.12.2012 в 09:25)
| | да, с objectVar.length я погорячился. Перебирал свойства, попутно считая их кол-во. Спасибо, что подтолкнули и дали понять до конца что такое свойство объекта. Я решил проблему, перейдя на массив. | |
|
|
|