Я просто наткнулся на интересную ситуацию в 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
}