Показать сообщение отдельно
  #1 (permalink)  
Старый 06.10.2016, 10:06
Новичок на форуме
Отправить личное сообщение для MuH3gPaB Посмотреть профиль Найти все сообщения от MuH3gPaB
 
Регистрация: 06.10.2016
Сообщений: 3

Как это работает?
Всем привет!

Я не силен в JS, но так получилось, что играясь с ExtJS написал код, который работает =) Но теперь я не могу понять почему и как? =)

Вот непонятный мне кусок:

Ext.define('MHCalendar.view.CalendarGrid', {
    extend: 'Ext.panel.Panel',
    calendar: new Ext.calendar.panel.Month(),

    initComponent: function () {
        this.callParent();
        var calendar = this.calendar;

        var btnNext = new Ext.button.Button({
            text: '>',
            handler: function () {
                calendar.nextMonth();
            }
        });

        var btnPrev = new Ext.button.Button({
            text: '<',
            handler: function () {
                calendar.previousMonth();
            }
        });

        this.add(this.calendar, btnPrev, btnNext);
    }
});


Непонятность в том, каким образом засунув локальную переменную calendar в handler она продолжает существовать после инициализации и нормально отрабатывает при нажатии на кнопку?

Там как-то указатель остается или что? Поясните пожалуйста.

ПС: Я тут кое что лишнее убрал из кода, чтобы поменьше было. Кнопки на самом деле в отдельном контейнере добавляются.

Последний раз редактировалось MuH3gPaB, 06.10.2016 в 10:19.
Ответить с цитированием