Не могу понять, что делает у автора apply.
Вот есть глава в учебнике
"что такое наследование". В ней пример:
function MenuHighlight(menuId) {
Menu.apply(this, arguments); // (1)
var parentOpen = this.open; // (2)
this.open = function() { // (3)
parentOpen(); // (3.1)
alert('меню открыто'); // (3.2)
};
}
А ниже идет объяснение. Важное подчеркнул:
Рассмотрим подробно каждую строку этого примера.
1) Вызов Menu.apply(this, arguments) вызывает функцию-конструктор меню, передавая ей текущий объект this и аргументы.
Она успешно срабатывает, инициализует меню и добавит в this публичные свойства и методы, например this.open.
2) Мы хотим заменить метод this.open() на свой, расширенный. Это мы сделаем в следующей строке, а пока скопируем родительский метод в переменную parentOpen, чтобы он остался доступен для вызова.
3) Создадим наш собственный this.open(). Он перезапишет полученный в строке (1).
Запустить родительский метод.
Затем наш собственный код, который выводит сообщение.
Не могу понять из этого объяснения, что делает метод apply.
Сначала в 1) автор пишет, что метод apply
передает в Menu объект this.
передавая ей текущий объект this и аргументы.
А потом в 3) он пишет, что метод apply оказывается
получает Menu для объекта this, а вовсе не передает.
Создадим наш собственный this.open(). Он перезапишет полученный в строке (1).
Так что же делает apply? Он
получает для функции объект или он
передает в функцию объект?
Может для автора это как-то и очевидно и одно и тоже, но я пока пытаюсь это освоить и хотелось бы четко понимать что делает метод apply.