[英]javascript passing variables and scopes
I am developing an web app and i need to play audio files. 我正在开发一个Web应用程序,我需要播放音频文件。 In this case I'm trying to create an object that will merge audio object properties, methods and events with some custom methods.
在这种情况下,我尝试创建一个对象,该对象将音频对象属性,方法和事件与某些自定义方法合并。
I have the following Object created: 我创建了以下对象:
<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>
OK, now I call my methods something like this: OK,现在我将我的方法命名为:
<script type="text/javascript">
AUDIO.init('audio-course', function(){
console.log(AUDIO.track);
});
</script>
What I want is that is possible to pass AUDIO.track as a returned variable by AUDIO.init() so I can use something like this?: 我想要的是可以通过AUDIO.init()将AUDIO.track作为返回变量传递,这样我可以使用类似的东西吗:
<script type="text/javascript">
AUDIO.init('audio-course', function(returnedAudioObject){
console.log(returnedAudioObject.duration);
});
</script>
If this is possible, please let me know the easiest way to do this. 如果可以的话,请告诉我最简单的方法。 Thanks in advance!
提前致谢!
I think you just want this? 我想你只想要这个吗?
if (typeof fn == 'function') fn.call(this, this.track)
Then returnedAudioObject
will be AUDIO.track
. 然后
returnedAudioObject
AUDIO.track
将是AUDIO.track
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.