Как использовать второй аргумент this в forEach?

75
18 мая 2021, 07:40

Всем привет.

Сегодня читая документацию реакта столкнулся с таким кодом

{React.Children.forEach(children, child => {
   console.log(child);
})}

Сначало подумал что это какой нибудь фокус Реакта потом узнал что нет это чистый JS.

То есть forEach принимает вторым аргументом this но абсолютно нигде нету про это инфы посмотрел много где даже в книге Дэвида Флэнагана JS подробное руководство . Нашел очень мало ресурсов про this и то они говорят что он есть но как использовать никто не сообщает.Learn.javascript.ru и то там только написано вот так:

Второй, необязательный аргумент forEach позволяет указать контекст this для callback. Мы обсудим его в деталях чуть позже, сейчас он нам не важен.

Вот тут есть небольшая инфа.И конечно MDN.Но нигде нету пример с this

Очень хотел увидеть пример forEach с использованием this.Приветствуется развернутые ответы.

Answer 1

Достаточно надумано, но вот:

function setStyle(entry) { 
  // вот этот this привязывается через второй аргумент forEach 
  this.style[entry[0]] = entry[1]; 
} 
 
let props = Object.entries({ 
  color: 'red', 
  fontSize: '30px' 
}); 
 
props.forEach(setStyle, d1); // устанавливаем все св-ва из объекта элементу d1 
props.forEach(setStyle, d2); // устанавливаем все св-ва из объекта элементу d2
<div id="d1">1</div> 
<div id="d2">2</div>

READ ALSO
Не отображается шрифт на страницах сайта при использовании windows 7

Не отображается шрифт на страницах сайта при использовании windows 7

Шрифты подгружаются в src, появляются и сразу же становятся белымиЕсли убрать свойство font-family в body, подгружаются дефолтные шрифты

101
Как использовать then в данной ситуации?

Как использовать then в данной ситуации?

Паршу сайт, есть функцияКак мне вернуть из этой функции значение? Как я понимаю нужно сделать после each then, который будет возвращать resolve, но я получал...

95
$ is not defined Angularjs

$ is not defined Angularjs

При оценке $('phone-details') в консоли элемент выводится, $ так же в консоли определен, но при клике на строку таблицы появляется ошибка ReferenceError: $ is not defined

100
Event собитие на slick slider(slick.next,slick.prev)

Event собитие на slick slider(slick.next,slick.prev)

Верстка мобильной версии slick slider

81