我想在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的變化和幻燈片事件,而不必明確告訴。我該如何去做到這一點?