javascript传递变量和作用域
我正在开发一个网络应用程序,我需要播放音频文件。在本例中,我尝试创建一个对象,该对象将音频对象属性、方法和事件与一些自定义方法合并 我已创建以下对象:javascript传递变量和作用域,javascript,object,callback,parameter-passing,Javascript,Object,Callback,Parameter Passing,我正在开发一个网络应用程序,我需要播放音频文件。在本例中,我尝试创建一个对象,该对象将音频对象属性、方法和事件与一些自定义方法合并 我已创建以下对象: <script type="text/javascript"> var AUDIO = { track: false, init: function(audioElement, fn) { var _this = this; _this.track = document.getE
<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>
var音频={
轨道:错误,
初始化:函数(audioElement,fn){
var_this=这个;
_this.track=document.getElementById(audioElement)| | false;
如果(!window.HTMLAudioElement){
警报(HELPER.translate('audio-load-error'));
_this.track=false;
}
否则{
AUDIO.track.onloadedmetadata=(函数(){
_这是回调(fn);
})();
}
返回_this.track;
},
on:函数(eventName,fn){
var_this=这个;
var listener=函数(事件){
_this.track.removeEventListener(eventName,listener,false);
}
_this.track.addEventListener(eventName,listener,false);
},
回调:函数(fn){
if(typeof fn=='function')fn.call(this);
if(typeof fn=='object')$.execCallback(fn);
}
}
好的,现在我把我的方法称为:
<script type="text/javascript">
AUDIO.init('audio-course', function(){
console.log(AUDIO.track);
});
</script>
init('AUDIO-course',function(){
控制台.log(音频.track);
});
我想要的是,可以通过AUDIO.init()将AUDIO.track作为返回变量传递,这样我就可以使用类似的东西了
<script type="text/javascript">
AUDIO.init('audio-course', function(returnedAudioObject){
console.log(returnedAudioObject.duration);
});
</script>
init('AUDIO-course',函数(returnedAudioObject){
日志(返回的AudioObject.duration);
});
如果可能的话,请告诉我最简单的方法。提前谢谢 我想你就是想要这个
if (typeof fn == 'function') fn.call(this, this.track)
然后returnedAudiooObject
将成为AUDIO.track