Подтвердить что ты не робот

Причина для .get() без индекса в jQuery API?

Скажем, что у меня есть страница, которая извлекает некоторые источники изображений, например:

<div id="d">
  <img src="foo.gif"/>
  <img src="bar.gif"/>
  <img src="gah.gif"/>
</div>
<script type="text/javascript">
  var srcs = $('div#d > img').map(function(){return this.src});
  // srcs => ['foo.gif', 'bar.gif', 'gah.gif']
</script>

Обратите внимание, что srcs не является массивом JavaScript, а представляет собой объект, похожий на массив; мы знаем это из-за того, что мы можем создавать вызовы API jQuery для объектов, возвращаемых селектором, и тот факт, что srcs.constructor != Array.

API jQuery предоставляет метод .get(), который при отсутствии аргумента возвращает "стандартный" массив. Есть ли веская причина использовать стандартный массив вместо объекта, подобного массиву, или этот метод просто включен для полноты?

[изменить]

Иными словами, каковы различия между массивом JavaScript и массивом, возвращаемым селектором jQuery?

4b9b3361

Ответ 1

Он позволяет использовать стандартные методы массива, которые jQuery не имеет, например push.

В частности, объекты jQuery предназначены для неизменяемости, тогда как массивы не являются.

Ответ 2

Основным преимуществом get является включение отрицательных индексов, таких как -1 для получения последнего элемента. Никакой аргумент не дает вам необработанный массив совпадающих элементов.