我正在开发一个网络应用程序,我需要播放音频文件。在这种情况下,我试图创建一个对象,它将音频对象属性、方法和事件与一些自定义方法合并。
我创建了以下对象:
<script type="text/javascript">
var AUDIO = {
track: false,
init: function(audioElement, fn) {
var _this = this;
_this.track = document.getElementById(audioElement) || false;
if (!window.HTMLAudioElement) {
alert(HELPER.translate('audio-load-error'));
_this.track = false;
}
else {
AUDIO.track.onloadedmetadata = (function() {
_this.callback(fn);
})();
}
return _this.track;
},
on: function(eventName,fn) {
var _this = this;
var listener = function(event) {
_this.track.removeEventListener(eventName, listener, false);
}
_this.track.addEventListener(eventName, listener, false);
},
callback: function(fn) {
if (typeof fn == 'function') fn.call(this);
if (typeof fn == 'object') $.execCallback(fn);
}
}
</script>
好的,现在我将我的方法称为:
<script type="text/javascript">
AUDIO.init('audio-course', function(){
console.log(AUDIO.track);
});
</script>
我想要的是可以通过 AUDIO.init() 将 AUDIO.track 作为返回的变量传递,所以我可以使用这样的东西?:
<script type="text/javascript">
AUDIO.init('audio-course', function(returnedAudioObject){
console.log(returnedAudioObject.duration);
});
</script>
如果可能,请告诉我最简单的方法。提前致谢!