Я просто наткнулся на интересную ситуацию в JavaScript. У меня есть класс с методом, который определяет несколько объектов с использованием объектно-литеральной нотации. Внутри этих объектов используется указатель this. Из поведения программы я понял, что указатель this ссылается на класс, на который был вызван метод, а не на объект, создаваемый литералом.
Это кажется произвольным, хотя я бы и ожидал, что он сработает. Это определенное поведение? Является ли он межсерверным? Есть ли какие-либо аргументы, объясняющие, почему это так, за исключением того, что "спецификация говорит так" (например, является ли это следствием более широкого дизайнерского решения/философии)? Пример с сокращенным кодом:
// 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
}
