задача отсюда:
var length = 10;
function fn() {
	console.log(this.length);
}

var obj = {
  length: 5,
 
  method: function(fn) {
    fn();//10, ясно, ибо this == window
    arguments[0]();//2
//	hence arguments[0]() is nothing but calling fn(). 
//Inside fn now, the scope of this function becomes the arguments array, 
//and logging the length of arguments[] will return 2.
	 
  }
};

obj.method(fn, 1);//
Вопрос: почему в вызове arguments[0](); мы имеем this как arguments?
Ведь console.log(arguments[0]==fn);//true?
Очевидно, как-то происходит вызов fn в контексте объекта/массива arguments, просто скобочная нотация применяется, а не точечная. Но почему в контексте объекта/массива arguments вызов fn происходит?
Что, arguments[0](); как бы (с точки зрения this) соответствует точечной нотации arguments.fn()?
Я перепахал англоязычный интернет, попытки объяснить этот вопрос не удались (вот, вот)