Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130

    referenziare l'oggetto istanziato quando ce di mezzo un setTimeout

    ciao

    volevo sapere come si fa a referenziare l'oggetto istanziato dall'interno di un costruttore quando si verifica una dilazione temporale. vabbe' spiego meglio perche cosi non dice molto la frase. ho questo costruttore:

    Codice PHP:

    var = function(){
       var 
    "ciao";
       
    this.ripeti = function(){
          
    alert(x);
          
    setTimeout(this.ripeti1000);
       }
    }

    var 
    = new C();
    O.ripeti(); 
    cosi come' il codiec non funziona, o meglio, funziona 2 volte (chiaro no?! la prima volta quando si lancia il metodo e poi al 1 timeout perche il this era disponibile al momento in cui esso viene eseguito la prima volta).

    come faccio a fare perpetuare la cosa all'infinito? in altre parole dove salvo il riferimento all'oggetto istanziato in modo da poter lanciare con successo il metodo ripeti()???

    grazzzie

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    dentro il settimeout perdi il riferimento a this

    puoi risolvere così

    codice:
    var C = function(){
       var x = "ciao";
       this.ripeti = function(){
          alert(x);
          var self = this;
          setTimeout(function() {
             self.ripeti();
          }, 1000);
       }
    }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    eggia! l'avevo fatto solo che non mettevo il self.go() all'interno di una funzione anonima ma lo lanciavo come stringa su cui il setTimeout fa eval. e mi dava uno di quegli errori assurdi che ti pare che firebug ti prenda per il culo!

    vabbe grazie comunque!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.