Я пытаюсь создать пару пользовательских объектов в JavaScript, и я не уверен, что я собираюсь сделать все правильно.Как пользовательский объект прослушивает события дочернего пользовательского объекта?
У меня есть два объекта: «UserInterface» и «VolumeSlider». До этого момента эти два объекта были независимыми, но связаны с помощью методов. Я решил, что UserInterface должен вместо этого «иметь» VolumeSlider.
Итак:
UserInterface = {
_volumeSlider: null,
initialize: function() {
this._volumeSlider = VolumeSlider; //TODO: Should this be a new volumeSlider();
this._volumeSlider.initialize();
//I want to setup a listener for VolumeSlider's change-volume events here.
}
}
VolumeSlider = {
_volumeSlider: null,
initialize: function() {
this._volumeSlider = $('#VolumeSlider');
var self = this;
this._volumeSlider.slider({
orientation: 'horizontal',
max: 100,
min: 0,
value: 0,
slide: function (e, ui) {
self.passVolumeToPlayer(ui.value);
},
change: function (e, ui) {
self.passVolumeToPlayer(ui.value);
}
});
},
passVolumeToPlayer: function (volume) {
if (volume != 0)
UserInterface.updateMuteButton(volume);
else
UserInterface.updateMuteButton('Muted');
}
}
Вопрос два раза:
- Является ли это хорошо способ создавать свои объекты и установки детей?
- Я бы хотел, чтобы UserInterface мог отвечать на изменения и слайд-события VolumeSlider._volumeSlider вместо того, чтобы быть явно указанными. Как я могу это сделать?