JackShcherbakov
@JackShcherbakov

Почему undefined?

Возникла проблема. Почему первое слвоо в алерете undefined? Вызвано ведь в правильном контексте через call:
https://jsfiddle.net/CitizenOne/ha49evee/20/
Но с bind работает:
https://jsfiddle.net/CitizenOne/ha49evee/21/
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
lazalu68
@lazalu68
Salmon
Функция-обработчик, которую вы передаёте в forEach, выполняется в контексте текущего элемента массива.
Если в метод forEach() был передан параметр thisArg, при вызове callback он будет использоваться в качестве значения this. В противном случае, в качестве значения this будет использоваться значение undefined. В конечном итоге, значение this, наблюдаемое из функции callback, определяется согласно обычным правилам определения this, видимого из функции.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AngryProgrammer001
@AngryProgrammer001
Unity C# Developer
//'use strict';

let group = {
  title: "Наш курс",
  students: ["Вася", "Петя", "Даша"],

  showList: function() {
    this.students.forEach(function(student) {
      alert(group.title + ': ' + student); // будет ошибка
    })
  }
}


group.showList.call(group);
Ответ написан
@rinatoptimus
Пользуйтесь console.log();
В вашем случае, если прописать console.log(this) сразу после showList: function() { ...
, в консоли выведется объект. Соответственно, попробуйте так:
group.students.forEach(function(student) {
      alert(group.title + ': ' + student); 
    })
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы