вернуться к уроку

Вызов в контексте массива

важность: 5

Каков результат? Почему?

let arr = ["a", "b"];

arr.push(function() {
  alert( this );
});

arr[2](); // ?

Вызов arr[2]() синтаксически – старый добрый obj[method](), в роли objarr, а в роли method2.

Итак, у нас есть вызов функции arr[2] как метода объекта. Соответственно, он получает в качестве this объект arr и выводит массив:

let arr = ["a", "b"];

arr.push(function() {
  alert( this );
})

arr[2](); // a,b,function(){...}

У массива в итоге 3 элемента: сначала их было 2, плюс функция.