2010-05-09 5 views
0
MyObj = 
{ 
    ajax: null, 
    init: function() 
    { 
     this.ajax = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"] 
      .createInstance(); 
     this.ajax.onload = function() 
     { 
      return function() {this.onload.apply(this, [null]);} 
     }; 
    }, 
    onload: function() 
    { 
     Reader.log("I really hope I can use `this.ajax` here"); 
    } 
} 

est-ce que ce n'est pas correct de lier la charge à MyObj? Pour une raison quelconque, onload n'a jamais été appelé. Cependant si j'évite de relier et juste mettre this.ajax.onload = this.onload alors onload invoqué. Comment obtenir un travail de liaison?javascript reliant

Répondre

1

et je me répondre ...

je aurais dû appeler la fonction

var me = this; 

this.ajax.onload = (function() 
     { 
      return function() {me.onload.apply(me, [null]);} 
     })(); 
+1

Pourquoi l'emballage de fonction supplémentaire là-bas? this.ajax.onload = function() {me.onload.apply (moi, [null]);} – Joshua

+0

@ Joshua: Vous avez raison, c'était inutile et cela a fonctionné même sans elle. – Pablo