Как работает ключевое слово «this» внутри функции?
Я только что натолкнулся на интересную ситуацию в 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
}