Автор Тема: Babel. Неверная компиляция контекста для стрелочной функции  (Прочитано 1099 раз)

DigitalMag

  • Зам зама
  • Юный джедай
  • *****
  • Сообщений: 89
  • Репутация +6/-0
    • Просмотр профиля
Почему babel преобразует эту строку

String.prototype.trimw = () => {
  return this.replace(/^\s+|\s+$/g, '');
};

вот в эту:

var _this = void 0;

String.prototype.trim = function () {
  return _this.replace(/^\s+|\s+$/g, '');
};

То есть меняет контекст?

DigitalMag

  • Зам зама
  • Юный джедай
  • *****
  • Сообщений: 89
  • Репутация +6/-0
    • Просмотр профиля
В общем, исследовав вопрос, я сделал два вывода:

- В стрелочные функции по другому принимают контекст (изначальный код был неверен):

При объявлении в глобальной области видимости они получают в качестве контекста window. Всегда. Даже если эта функция привязана к прототипу!

Внутри класса получает в качестве контекста экземпляр класса