Почему this в данном примере указывает на глобальный объект window?
Потому что функция не вызывается на каком либо объекте, а вызывается:mappedValue = callback.call(T, kValue, k, O);
где T - опционально переданный второй аргумент. Если он не передан туда поподает undefined и в обычном режиме undefined заменяется на Window, а в строгом остается undefined.
Исправить можно использовав стрелочную функцию для колбека map:return this.brands.map(brand => console.log(` The ${brand} is a ${this}`));
или передав контекст:return this.brands.map(function(brand) { console.log(` The ${brand} is a ${this}`; }, this));
Стрелочным функциям передать контекст нельзя.
Потому что функция не вызывается на каком либо объекте, а вызывается:mappedValue = callback.call(T, kValue, k, O);
где T - опционально переданный второй аргумент. Если он не передан туда поподает undefined и в обычном режиме undefined заменяется на Window, а в строгом остается undefined.
Исправить можно использовав стрелочную функцию для колбека map:return this.brands.map(brand => console.log(` The ${brand} is a ${this}`));
или передав контекст:return this.brands.map(function(brand) { console.log(` The ${brand} is a ${this}`; }, this));
Стрелочным функциям передать контекст нельзя.