но Вы прямо указываете ВКонтакте, что Вы не их приложение, а явный самозванец, использующий данные от официальных приложений
Возможно, этот сервис использует так называемые аналоги Audio API (1, 2), тогда достаточно, авторизовывая пользователя даже через собственное Standalone-приложение, получить его ID и, отправив запрос на выше приведённые сервисы, получить распарсерную музыку.
1. Сделать метод call у всех (в базовом классе), а не только у функций - интересная идея, надо будет подумать. Хотя наверное смысла нет, я собираюсь не динамически менять тип сущностей через поле, а создавать каждый раз новую нужного класса (а тип проверять через instanceOf). Они очень легковесные, мне кажется, падения производительности сильного не будет.
2. Нормальный вариант, но вектор наверное лучше тем, что есть ссылка на root scope (он часто нужен, когда какая-нибудь плохо написанная функция пишет переменные в глобальную область без var). Ну или просто ссылку на первый элемент списка хранить в переменной
3. Ну да, в самом деле, вы правы. Просто передавать ссылку на объект надо будет аргументом дополнительно в call