0

我正在开发一个网络应用程序,我需要播放音频文件。在这种情况下,我试图创建一个对象,它将音频对象属性、方法和事件与一些自定义方法合并。

我创建了以下对象:

<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>

如果可能,请告诉我最简单的方法。提前致谢!

4

1 回答 1

0

我想你只是想要这个?

if (typeof fn == 'function') fn.call(this, this.track)

然后returnedAudioObjectAUDIO.track

于 2013-10-13T00:52:57.250 回答