У меня есть ситуация, когда я пытаюсь заставить работать с array
, но я просто не думаю, что так и будет. Я хочу иметь список объектов, каждый из которых имеет уникальный идентификатор, и я хочу иметь возможность легко ссылаться на конкретный объект без необходимости циклически перемещаться по массиву в поисках этого идентификатора.
Если я использую object
, я могу легко использовать уникальный идентификатор в качестве ключа и объект в качестве значения. Однако, если я использую объект вместо массива, мне придется использовать цикл for...in
, и я знаю, что есть проблема, связанная с тем, что если кто-то, использующий мой код, расширил Object.prototype
.
Так вот мой вопрос:
Действительно ли так распространено, что люди распространяют Object.prototype
, что мне надоело его использовать? Есть ли другие причины, по которым я бы не хотел использовать цикл for...in
?
С другой стороны, является ли снижение производительности при циклическом просмотре массива в поисках уникального идентификатора настолько минимальным, что мне не о чем беспокоиться?
(Кстати, в массиве, вероятно, будет довольно мало элементов, но я буду обращаться к нему очень часто. Кроме того, код, который я пишу, будет плагином jQuery, поэтому я не имею никакого контроля над тем, что другие плохие люди его объединяют.)
UPDATE:
Основываясь на рекомендациях @nnnnnn, я настроил тест jsperf и вот результаты:
http://jsperf.com/accessing-object-properties-vs-iterating-over-arrays
В принципе, хотя путь объекта немного быстрее, разница незначительна. Тем не менее, использование for...in
с hasOwnProperty
кажется более чистым.