преимущество метода $ .each перед циклом for..in? - PullRequest
0 голосов
/ 27 мая 2009

Различные библиотеки JavaScript (например, jQuery) предлагают метод each:

$.each(myObj, myFunc);

В чем преимущество использования встроенной петли for..in:

for(var i in myObj) {
    myFunc(i, myObj[i]);
}

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

Ответы [ 4 ]

4 голосов
/ 27 мая 2009

Я могу придумать как минимум 3 преимущества, хотя они относительно малы.

  1. Он следует парадигме цепочки jQuery, позволяя вам при необходимости объединить несколько итераций.
  2. Выдвигает ключ и значение для вас в качестве аргументов для обратного вызова, удаляя этот код из вашего цикла.
  3. Синтаксис согласуется с другим вашим кодом jQuery, потенциально повышающим читабельность.

Недостатки - небольшие накладные расходы - вы должны платить за то, что он делает для вас, - и возможность спутать его с методом $ (). Each (), который совершенно другой.

4 голосов
/ 27 мая 2009

Как объяснение jQuery $.each(object, callback) сообщает

Общая функция итератора, которая может использоваться для плавного перебора как объекты, так и массивы.

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

2 голосов
/ 27 мая 2009

Первая занимает 1 строку, другая - 3. Вы можете делать цепочки, например, после вызова первой функции другого массива.

2 голосов
/ 27 мая 2009

В каждом примере вы можете использовать this для вызова выбранного в данный момент элемента и работы с ним.

$("div img").each(function(i){
    this.id = this.id + "_" + i;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...