Я думаю, что это был бы более ОО путь. Настройте еще две функции внутри проигрывателя. Одна функция регистрирует элемент пользовательского интерфейса для действия Player, а другая - для отмены регистрации действия. Поэтому вместо того, чтобы сохранять явную коллекцию кнопок, вы можете просто опираться на jQuery.live и jQuery.die. Например:
function registerAction(selector, action) {
// you could have some logic to map the passed in action
// to the actual function name
$(selector).live('click', action/functionName);
}
function unRegisterAction(selector, [action]) {
// you could have some logic to map the passed in action
// to the actual function name
$(selector).die('click', [action/functionName]);
}
Тогда ваш пример main.js, приведенный выше, станет:
var player = new Player(AudioObj); // Audio object links to Audio class (not shown)
player.registerAction('#play', play);
player.registerAction('#pause', pause); // Play and pause ID's link to HTML Document Element
И ваш конструктор Player станет:
Player = function(Audio) {
this.Audio = Audio;
}
Или что-то в этом роде.