我想在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的变化和幻灯片事件,而不必明确告诉。我该如何去做到这一点?