jQuery: это возвращает документ вместо кнопки внутри обработчика события клика [duplicate]

Канонический вопрос Если вы обнаружите вопрос о проблемах после замены объявления / выражения функции функцией стрелки, пожалуйста, закройте его как дубликат этого.

Функции стрелок в ES2015 обеспечивают более сжатый синтаксис. Могу ли я заменить все мои объявления / выражения функций функциями стрелок? Что мне нужно искать?

Примеры:

Функция конструктора

function User(name) {
  this.name = name;
}

// vs

const User = name => {
  this.name = name;
};

Методы прототипа

User.prototype.getName = function() {
  return this.name;
};

// vs

User.prototype.getName = () => this.name;

Объект (литерал)

const obj = {
  getName: function() {
    // ...
  }
};

// vs

const obj = {
  getName: () => {
    // ...
  }
};

Обратные вызовы

setTimeout(function() {
  // ...
}, 500);

// vs

setTimeout(() => {
  // ...
}, 500);

Вариадические функции

function sum() {
  let args = [].slice(arguments);
  // ...
}

// vs
const sum = () => {
  let args = [].slice(arguments);
  // ...
};
245
задан 30 March 2016 в 23:05

1 ответ

Посмотрите на этот пример Plnkr

Переменная this сильно отличается timesCalled с шагом 1 при каждом вызове кнопки. Ответ на мой личный вопрос:

.click( () => { } )

и

.click(function() { })

создают одинаковое количество функций при использовании в цикле, как вы можете видеть из подсчета Guid в Plnkr.

2
ответ дан 15 August 2018 в 16:08

Другие вопросы по тегам:

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