Что такое объект jQuery? - PullRequest
8 голосов
/ 22 июня 2011

JavaScript переопределяет, что означает Array, потому что массив является объектом со свойством .length и такими методами, как .slice() и .join().

jQuery определяет объект jQuery как "Array like"потому что у него есть свойство length, но у него нет определенных методов массива, таких как join().

Если бы я определил объект jQuery как объект, и забыл упомянуть что-либо, связанное смассив, как бы я определить это?Какие свойства у него есть, кроме длины?

Полагаю, что все методы - это то, что вы видите в документации, намного превышающее количество методов в массиве.

Ответы [ 2 ]

35 голосов
/ 22 июня 2011

Объект jQuery подобен массиву, что означает, что он содержит ноль или более индексов (свойства, имена которых являются положительными целыми числами, начинающимися с нуля).Помимо этих индексов, объект jQuery содержит следующие свойства:

  • length
  • context
  • selector

А также около 140 унаследованных методов (которые определены для объекта jQuery.prototype - вы можете сделать console.dir(jQuery.prototype), чтобы получить полный список ...).

Обратите внимание, что объекты jQuery не содержат (или наследуют) методы Array (slice, substr, ...).Если вы хотите выполнить эти методы для вашего объекта jQuery, используйте call / apply.


Например, если у вас есть 3 элемента TEXTAREA на странице, и вы делаете это:

var j = $('textarea');

, тогда этот j jQuery-объект будет содержать следующие свойства:

  • 0 - ссылка на первый элемент TEXTAREA
  • 1 - ссылка навторой элемент TEXTAREA
  • 2 - ссылка на третий элемент TEXTAREA
  • length - значение 3
  • context - ссылка на documentобъект
  • selector - 'textarea'
  • плюс все эти унаследованные методы ...
2 голосов
/ 22 июня 2011

объект jQuery - это объект, имеющий

  • свойство длины
  • числовые свойства, которые ссылаются на элементы из выбора (0,1,2,3 ...)
  • привязки к функциям jQuery
  • дополнительные свойства jQuery

Длина и числовые свойства позволяют объекту реагировать как массив.Вы можете запустить его в цикле for или использовать такие функции, как map или each.

Я бы порекомендовал использовать отладчик вашего браузера или Firebug и проверить объект jQuery.Это многому научит вас, как оно структурировано.

...