A quoi correspond this ?

Signaler
Messages postés
195
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
26 octobre 2009
-
Messages postés
626
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
-
Salut,

j'ai récupéré un bout de code que je dois adapter à mes besoins et pour cela, il faudra que je sache à un moment ce que vaut "this" pour le remplacer par sa vrai valeur, y a une méthode pour le savoir ?

7 réponses

Messages postés
626
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
3
Tu peux être plus clair ? Un bout de code serait le bienvenue. ^^
Messages postés
195
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
26 octobre 2009
1
ben a un moment, dans le code, on utilise this pour faire plus court, or moi je dois appeler ce code d'une autre façon, et du coup le this ben y vaut plus la même chose, logique non ? Donc il faudrait que je sache ce qu'il remplace à l'origine.

voilà le code :

Example.GridWindow = Ext.extend(Ext.app.Module, {
    init : function(){
        this.launcher = {
            text: 'Grid Window',
            iconCls:'icon-grid',
            handler : this.createWindow,
            scope: this
        }
    },


 


    createWindow : function(){
        //alert(this);
  var desktop = this.app.getDesktop();

j'ai pas mis la suite, je pense pas que se soit indispensable.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
bonjour,

>>on utilise this pour faire plus court
    pas seulement,
    c'est
plutôt
très souvent utilisé pour éviter de citer "en dur" les élements,
       pour que ce soit indépendant de l'appel justement.

>>je dois appeler ce code d'une autre façon,
>>et du coup le this ben y vaut plus la même chose, logique non ?
    euh ? ben non.
    this c'est l'objet sur lequel on est.
         function msg(z)
         { alert(z.value);   }
       
            va afficher le value de l'input
             on pourrait faire onclick="msg(document.getElementById('t1'));"
             mais avec this, on change l'id et ça reste valable.
             c'est un exemple un peu niais.
            
        et dans une fonction... c'est la fonction.
            function Base()
            {    this.p1="exemple";    }
            Base.prototype.Fnct = function ()
            {    alert(this.p1);    }
             var f1=new Base();


      
    pas compris la question, le but recherché... donc

<hr />
Cordialement                Bul         [mon Site]     [M'écrire]<hr />En général, c'est absurde de généraliser.
Messages postés
195
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
26 octobre 2009
1
ben mon problème, c'est que comme je dois faire appelle à ce bout de code d'un autre endroit, le this ne désigne plus la meme chose, et donc fait tout planter. donc il me faudrait savoir dans le code d'origine ce que remplace exactement this pour savoir comment adapter le code.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
le this, sur ce que tu nous montres, c'est la function.

par quoi voudrais-tu remplacer ? ce n'est pas possible.

tu peux l'appeler de n'import où ( pas n'importe comment ! ) : ça ne doit pas planter.
<hr />



Cordialement                Bul         [mon Site]     [M'écrire]<hr />
En général, c'est absurde de généraliser.
Messages postés
195
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
26 octobre 2009
1
c'est pas faut, pourtant, sa plante.

faut dire que j'utilise Ext et j'ai pas encore bien tout compris
Messages postés
626
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
3
Je en connais pas Ext mais si c'est la même chose que  Prototype, il ne faut pas utiliser this mais directement l'objet.
Par exemple :

var mesInput = $A(document.getElementsByTagName('input'));
mesInput.each(function(input){
    input.onclick = function(){
       executer_fonction( this );
    }
});

Ca c'est faut, il faut lui passer directement l'objet en parametre :

var mesInput = $A(document.getElementsByTagName('input'));

mesInput.each(function(input){

    input.onclick = function(){

       executer_fonction(input);

    }

});

Je pense que ton problème doit être similaire.