вторник, 28 января 2014 г.

Вызов родительского конструктора внутри функции для обеспечения наследования

function SlidingMenu(menuId) {

    Menu.apply(this, arguments); // (1) Родительский конструктор записывает в объект свойства и методы.

    var parentOpen = this.open;  // (2)

    this.open = function() {        // (3)
        parentOpen();                  // (3.1)
       ...                                      // (3.2)
    };

}

1) Вызов Menu.apply(this, arguments) вызывает функцию-конструктор меню, передавая ей текущий объект this и аргументы.
Она успешно срабатывает, инициализует меню и добавит в this публичные свойства и методы, например this.open.

2) Мы хотим заменить метод this.open() на свой расширенный. Это мы сделаем в следующей строке 3.1, а пока — скопируем родительский метод open в переменную.
Создадим наш собственный this.open(). Он перезапишет тот, который был создан Menu, в строке (1). Чтобы сохранить доступ к старому методу, мы скопировали его в 3.1.
Запустить родительский метод.
Затем наш собственный код…

Комментариев нет:

Отправить комментарий