Функция вызова в addEventListener с неявным передачей объекта события

Я немного новичок, когда дело доходит до javascript, и у меня есть nextButton . addEventListener ( 'click' , this . switchMonth . bind ( this , true ), false ); строка кода:

switchMonth(next, month, year, dayUTC, dates, datesChosen) {}

и определение функции .bind выглядит следующим образом:

addEventListener

Я хочу, чтобы true из функции switchMonth был первым параметром, переданным в switchMonth (логическое значение true в качестве первого параметра для switchMmonth). Однако в этом случае этот объект передается как второй аргумент switchMonth. Как мне избежать этого и передать только один аргумент swtichMonth, который является логическим значением, переданным внутри метода addEventListener?

javascript,javascript-events,addeventlistener,

0

Ответов: 1


2

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

Также обратите внимание , что третий параметр addEventListener, :nextButton.addEventListener('click', () => { this.switchMonth(true); });

MDN : если не указано, useCapture по умолчанию - false.

Таким образом, возможно, также опустить это для краткости, иначе это просто шум.

.bind

Если вам приходилось использовать .bindи в bindодиночку, никаких других функций, вы должны были бы использовать event все параметры для обеспечения того, eventчтобы получившееся позже сообщение было отброшено:

nextButton.addEventListener('click', this.switchMonth.bind(
  this,
  true, // next
  undefined, // month
  undefined, // year
  undefined, // dayUTC
  undefined, // dates
  undefined // datesChosen
));

(не делайте этого)

JavaScript, JavaScript-события, addeventlistener,
Похожие вопросы
Яндекс.Метрика