夥計們 - 我想學習如何編寫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