¿Cómo funciona la palabra clave “this” dentro de una función?

Acabo de encontrar una situación interesante en JavaScript. Tengo una clase con un método que define varios objetos usando la notación literal del objeto. Dentro de esos objetos, elthis Se está utilizando el puntero. Del comportamiento del programa, he deducido que elthis puntero se refiere a la clase en la que se invocó el método y no al objeto creado por el literal.

Esto parece arbitrario, aunque es la forma en que esperaría que funcionara. ¿Es este comportamiento definido? ¿Es seguro para todos los navegadores? ¿Hay algún razonamiento subyacente por qué es la forma en que está más allá de "la especificación lo dice" (por ejemplo, es una consecuencia de una decisión / filosofía de diseño más amplia)? Ejemplo de código al revés:

// 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
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta