伙计们 - 我想学习如何编写OO Javascript,我来自as3 OO背景... 问题我有一个类的方法作为回调传递给另一个类...范围做OO javascript回调
在下面的例子中,我创建的AppController类的实例,并在其中,我创建ConnectionMonitor类的一个实例。我传递了一个AppController的方法,以被ConnectionMonitor回调。该回叫的作品很好,但似乎在回调函数里面有什么失去了它的类中(AppController中)的范围...
有什么想法?
//in the HTML
<script>
$(document).ready(function(){
new AppContoller().init();
});
</script>
//in the js file
//AppController Class
var AppContoller = function(){
this.body = $("body");
this.init = function(){
this.connection = new ConnectionMonitor();
this.connection.detectInitialConnection(this.initialConnectionDetected);
}
//callback function I pass
this.initialConnectionDetected = function(bool){
if(bool){
trace("app connected? "+bool); // logs - "app connected? true"
this.showOnlineSwf(); //thows error - "Object [object DOMWindow] has no method 'showOnline' "
}
else{
}
}
this.showOnlineSwf = function(){
trace("i'm online");
}
}
//ConnectionMonitor Class
var ConnectionMonitor = function()
{
this.detectInitialConnection = function(callbackFunction){
setTimeout(callbackFunction, 1000, [true]);
}
}
function trace(arg){
console.log(arg.toString());
}
谢谢,在铬中工作,但不是在FF 3.6? FF说:“his.initialConnectionDetected.bind不是一个函数 [Break On This Error] this.connection.detectInitialConnect ... tialConnectionDetected.bind(this));” – nuway 2012-01-13 20:57:17
它在FF4中可用,有一个兼容性表文章。您可以包含MDN提供的代码片段或谷歌的“ES5垫片”。 – Dennis 2012-01-13 22:15:09