Ved-форум поддержки

Программирование => Javascript и css => Тема начата: DigitalMag от Февраля 09, 2020, 09:37:15 am

Название: Babel. Неверная компиляция контекста для стрелочной функции
Отправлено: DigitalMag от Февраля 09, 2020, 09:37:15 am
Почему babel преобразует эту строку

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

вот в эту:

var _this = void 0;

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

То есть меняет контекст?
Название: Re: Babel. Неверная компиляция контекста для стрелочной функции
Отправлено: DigitalMag от Февраля 09, 2020, 09:40:53 am
В общем, исследовав вопрос, я сделал два вывода:

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

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

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