Изменение Date.prototype и привязка этого - PullRequest
0 голосов
/ 09 февраля 2019

Простое задание и много вопросов.

Мне нужен был простой способ отобразить день недели.Для этого самым простым способом было модифицировать прототип Date.pro следующим образом:

Date.prototype.getWeekDay = function () {
  const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
  return weekday[this.getDay()];
}

Я знаю, что мы обычно должны избегать модификации прототипа.Но в этом случае я не думаю, что это вызывает какие-либо проблемы.Я прав?Могу ли я сделать это?Или это с учетом плохого кодирования?

Второй вопрос касается связывания функций this в стрелках.Если я изменю вышеприведенную функцию на функцию стрелки следующим образом:

Date.prototype.getWeekDay = () => {
  const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
  return weekday[this.getDay()];
}

Функция больше не работает из-за ключевого слова this.Я знаю, что должен связать это, но я не знаю, как это сделать.Как мне правильно связать это?

1 Ответ

0 голосов
/ 09 февраля 2019

Из спецификации ECMAScript 2015:

Любая ссылка на аргументы, super, this или new.target в ArrowFunction должна разрешать привязку в лексической среде.Как правило, это будет функциональная среда непосредственно включающей функции.

Так что в принципе вы не можете привязать ее

...