Вызов в контексте массива
важность: 5
Каков результат? Почему?
let arr = ["a", "b"];
arr.push(function() {
alert( this );
});
arr[2](); // ?
Вызов arr[2]()
синтаксически – старый добрый obj[method]()
, в роли obj
– arr
, а в роли method
– 2
.
Итак, у нас есть вызов функции arr[2]
как метода объекта. Соответственно, он получает в качестве this
объект arr
и выводит массив:
let arr = ["a", "b"];
arr.push(function() {
alert( this );
})
arr[2](); // a,b,function(){...}
У массива в итоге 3 элемента: сначала их было 2, плюс функция.