$ jQuery .each (прибытие, нечто) по сравнению с $ (прибытие) .each (нечто)

В jQuery, из чего различие между следующими двумя конструкциями jQuery.each:

// Given
var arr = [1,2,3,4],
    results = [],
    foo = function (index, element) { 
       /* something done to/with each element */
       results.push(element * element); // arbitrary thing.
    }

// construction #1
$.each(arr, foo); // results = [1,4,9,16]

// construction #2
$(arr).each(foo); // results = [1,4,9,16]

Есть ли какое-либо различие или это просто синтаксис?

5
задан Brian M. Hunt 8 June 2010 в 12:41
поделиться

2 ответа

$ (). Each () - это просто оболочка для $. Each () , , вы можете увидеть это в основном коде :

each: function( callback, args ) {
    return jQuery.each( this, callback, args );
}

Хотя $ (something) .each () предназначен для элементов, я не могу обещать, что вы, используя его с простым массивом, не сломаетесь позже (маловероятно, что он сломается, поскольку jQuery хотя объекты являются обернутыми массивами). В данном случае предполагаемое использование - это прямой вызов $. Each () .

8
ответ дан 14 December 2019 в 01:02
поделиться

Нет никакой разницы в способе обработки массива, это чисто синтаксис.

jQuery - очень свободная библиотека, которая позволяет вам использовать преимущества каждой функции по-разному, чтобы вам было удобно.

jQuery обрабатывает this примерно так

function each(first,second)
{
    array = (instanceOf this == Array) ? this : ((first instanceOf Array) ? first : second);
    callback = (instanceOf second == Function) ? second : first;
    //As  you can see its testing what types are being sent to the fintion
}

если первый аргумент является функцией, то this должен быть массивом IE $ ([1,2,3, 4]). Each (callback) в противном случае ожидается, что first - это массив, а second - это IE обратного вызова `$ .each (array, callback);

но в любом случае процесс почти такой же, просто проверка типа аргумента помогает пользователю не понимать, как справиться с ситуацией.

Даже несмотря на то, что каждый из них на самом деле обрабатывается не так, есть несколько функций, которые используют эту технику для создания разрозненности

1
ответ дан 14 December 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: