我正在开发一个网络应用程序,我需要播放音频文件。在这种情况下,我正在尝试创建一个将音频对象属性,方法和事件与一些自定义方法合并的对象。
我创建了以下对象:
<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>
如果可以,请告诉我最简单的方法。提前谢谢!
答案 0 :(得分:0)
我想你只想要这个?
if (typeof fn == 'function') fn.call(this, this.track)
然后returnedAudioObject
将为AUDIO.track
。