@Shimpanze

Какую функцию использовать правильнее?

Здравствуйте!

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

var a = document.querySelectorAll('.link');

[].forEach.call(a, function(el) {
  el.click = function(e) {
    // что-нибудь делаем
  }
});


или:

var a = document.querySelectorAll('.link');

a.forEach(function(el) {
  el.addEventListener('click', function() {
    // что-нибудь делаем
  });
});
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 2
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
var a = document.querySelectorAll('.link');

Array.prototype.forEach.call(a, function(el) {
  el.addEventListener('click', function() {
    // что-нибудь делаем
  });
});

1. Метод forEach у DOM коллекции не стандартен, работать будет не везде
2. События слушаем только через addEventListener
3. Создавать инстанс объекта (массива) ради вызова метода прототипа - зло, жрущее память и такты процессора
Ответ написан
Комментировать
streetflush
@streetflush
a.forEach.call(a, function(el) {

а серьезно, в первом подходе нет необходимости т.к. "a" и так массив. и первый способ менее читабелен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы