IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

port�e de la variable this


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    80
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 80
    Par d�faut port�e de la variable this
    Bonjour,

    Je m'interroge sur la port�e de la variable this dans les fonctions... Voici l'exemple:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function cProgramme (id) {
    	this.id = id;
     
    	this.createMarker = function (type) {
    		var nbTRA = this.taille(type);
    		var n_id = this.id;
    		GEvent.addListener(marker, 'click', function() {
    			infoWindowOpened='myclick('+n_id+', '+type+')';
    			marker.openInfoWindowHtml(t_js+'<div class="infobulle" id="info' +n_id+ '">'+t_HTML[0]+'</div>', { maxWidth: 400 });
    		});
    	}
    }
    ( vous reconnaitrez p-e l'utilisation de l'API googlemap, qui revient � dire que pour l'�venement onclick du marker il faut ex�cuter la fonction anonyme d�finie apr�s )

    Donc : dans ma classe cProgramme j'ai bien d�fini this.id (locale)
    ensuite dans la 'fonction' (je devrais dire m�thode) this.createMarker je peux utiliser cette variable this.id ! premi�re interrogation, j'aurais cru devoir utiliser le mot cl� 'parent' pour acc�der � une variable de cProgramme dans sa fonction-m�thode, mais non, this.id, �a marche.

    Bon... soit... alors je cr�e donc un �venement sur l'objet marker avec une fonction anonyme appel�e sur le onclick, cette fonction elle ne reconnait plus du tout le this.id de cProgramme. Je suis donc oblig� de la red�clarer :
    var n_id = this.id;
    dans createMarker, pour l'utiliser dans cette fonction... (d'ailleurs j'aurais peut etre du l'utiliser avec this.n_id non?)

    Quelqu'un peut m'expliquer? quelle est la port�e de 'this'? et peut-on utiliser 'parent' en javascript et comment?
    merci

  2. #2
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    salut,
    la port�e de this est un des pi�ges du javascript ^^
    mon conseil : d�clare un objet "var obj = this" que tu utilises par la suite

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function cProgramme (id) {
    	this.id = id;
    var obj = this; 
    	this.createMarker = function (type) {
    		var nbTRA = obj.taille(type);
    		GEvent.addListener(marker, 'click', function() {
    			infoWindowOpened='myclick('+obj.id+', '+type+')';
    			marker.openInfoWindowHtml(t_js+'<div class="infobulle" id="info' +obj.id+ '">'+t_HTML[0]+'</div>', { maxWidth: 400 });
    		});
    	}
    }

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    80
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 80
    Par d�faut
    merci du conseil, �a c'est coh�rent en fait. le truc du this c'est quasiment un bug du langage, on pourrait au moins faire des langages coh�rents les uns les autres.

    Pourquoi alors je devrais d�clarer :
    this.createMarker = function (type) {
    au lieu de:
    obj.createMarker = function (type) {

    et est-ce que je peux utiliser 'parent' dans la fonction createMarker pour retrouver ma variable obj?

Discussions similaires

  1. [XSLT] pb port�e d'une variable
    Par NPortmann dans le forum XSL/XSLT/XPATH
    R�ponses: 4
    Dernier message: 23/05/2006, 15h53
  2. [FOP] [ERROR] non-static variable this cannot be referenced from a static context
    Par cash3000 dans le forum API standards et tierces
    R�ponses: 8
    Dernier message: 05/05/2006, 16h46
  3. Port�e d'une variable globale
    Par Giill dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 27/12/2005, 10h13
  4. [MFC] Port�e d'attributs/variables ?
    Par BaBeuH dans le forum MFC
    R�ponses: 4
    Dernier message: 14/06/2005, 10h31
  5. R�ponses: 4
    Dernier message: 07/05/2004, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo