Jak działa słowo kluczowe „this” w ramach funkcji?

Właśnie natknąłem się na interesującą sytuację w JavaScript. Mam klasę z metodą, która definiuje kilka obiektów za pomocą notacji obiektowo-literalnej. Wewnątrz tych obiektówthis wskaźnik jest używany. Z zachowania programu wywnioskowałem, żethis wskaźnik odnosi się do klasy, na której metoda została wywołana, a nie do obiektu tworzonego przez literał.

Wydaje się to arbitralne, choć w taki sposób oczekiwałbym, że zadziała. Czy to jest zdefiniowane zachowanie? Czy jest bezpieczny dla różnych przeglądarek? Czy jest jakieś uzasadnienie, dlaczego tak jest poza „specyfikacją tak mówi” (na przykład, czy jest to konsekwencja szerszej decyzji / filozofii projektowania)? Przykładowy kod w dół:

// inside class definition, itself an object literal, we have this function:
onRender: function() {

    this.menuItems = this.menuItems.concat([
        {
            text: 'Group by Module',
            rptletdiv: this
        },
        {
            text: 'Group by Status',
            rptletdiv: this
        }]);
    // etc
}

questionAnswers(5)

yourAnswerToTheQuestion