на самом деле все просто, в js есть понятия замыкание (closure) и контекст (context).
замыкание (closure) - это область видимости в котором объявлена функция, поэтому всё что видно в этой области видимости будет доступно в функции.
контекст (context) - это объект внутри которого, т.е. в контексте, вызывается функция. Поэтому все поля этого объекта будут доступны через переменную this.