2012-07-03 4 views
0

Я пытаюсь понять этот пример из jquery api в этом фрагментеПочему «get()» необходим в этом примере?

 var tags = this.map(function() { 
     return this.tagName; 
    }) 
      .get().join(", "); 

почему получить() необходимо? в api говорится, что get() Извлеките элементы DOM, соответствующие объекту jQuery. В этом случае я вижу, что get() не применяется к объекту jq, а по строкам. Когда я удаляю Get(), я получаю сообщение об ошибке:

Uncaught TypeError: Object [object Object] has no method 'join'

почему присоединиться не может работать с картой?

ответ

2
  • Здесь this является JQuery объект со списком узлов. (Все функции в jQuery.fn имеют свой контекст (т.е. this) набор для объекта JQuery, который делает вызов функции.)

  • Вызов map возвращает объект JQuery со списком строк. (Вы можете ввести в заблуждении map функции JQuery с функцией map массива, введенной в ECMAScript 5)

  • Вызова get возвращает обычный JS массив этих строк, и join действует на этом массиве.

Вызов get необходимо преобразовать объект JQuery со списком строк (возвращенного map) в простом массиве JS, поэтому он может быть склеены вместе с join.

0

join предназначен для массивов (чистых массивов js).

ваша функция возвращает Jquery массив, который должен быть переведен на Js равнину

.Get() - делает это.

http://api.jquery.com/get/

Retrieve the DOM elements matched by the jQuery object.

enter image description here

+0

"return this.tagName;" - этот объект jq? –

+1

см. Мой рис ........ –

+4

@AladdinHoms Нет, но результатом вызова '.map()' является объект jQuery. Вызов '.get()' создает собственный массив Javascript из элементов (в данном случае текстовых узлов) внутри этого объекта jQuery, что позволяет использовать 'join()', что является собственной функцией Javascript массивов, не функция jQuery. –

Смежные вопросы