Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170

    Javascript Prototype e This sovrapposto :|

    Salve a tutti.
    Non sapevo come riassumere nel titolo ma spiego meglio.

    Ho una classe

    [CODE]

    function Classe(){

    this.divChiudi = $("#chiudi");

    }

    Classe.prototype = {
    __this: "",
    init: function(){
    __this=this;
    },

    chiudi: function(){
    __this.divChiudi.click(function{__this.chiudi();}) ;

    }
    [CODE]


    Questo è un esempio che potrebbe anche non aver senso, ma quello che non riesco a capire è come faccio all'interno della mia classe a portarmi dietro la classe stessa.

    Dentro la funzione chiudi di Classe mi prendo il divChiudi e setto la funzione click, facendo come ho scritto funziona benissimo ma c'è un problema....
    ....quando creo un altro oggetto di tipo Classe la beffa, __this ora corrisponde in tutti gli oggetti all'ultimo creato....quindi è come se __this fosse una variabile globale


    Qualcuno mi potrebbe dire dove sbaglio? magari è una stupidaggine, ma anche nei setInterval ho lo stesso problema

    grazie a tutti ciao!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Questo è un esempio che potrebbe anche non aver senso
    Beh ad una prima occhiata direi che non ha proprio senso, ma ci dici che cosa vorresti ottenere da tale codice?

    Qualcuno mi potrebbe dire dove sbaglio? magari è una stupidaggine, ma anche nei setInterval ho lo stesso problema
    Che c'entra tutto questo con la funzione setInterval?


  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170
    Ciao.
    Grazie della risposta.
    Ho appena trovato un escamotage funzionante.

    Perciò, il punto non era tanto setIntervall ma il problema sta nel portarsi appresso l'oggetto corrente dentro la classe, non ci riuscivo.


    codice:
    function Classe(){ 
    this.divChiudi = $("#chiudi"); } 
    Classe.prototype = { __this: "", init: function(){ __this=this; }, chiudi: function(){ __this.divChiudi.click(function{__this.chiudi();}); }
    l'esempio non ha senso (non potevo postare tutta la classe mi scuso) però nel metodo click del divChiudi __this non corrisponde all'oggetto corrente e neanche nel setInterval (dove tralaltro mi vedeva un DOMelement).

    Ora dopo vari tentativi ho risolto così

    in ogni metodo della classe dichiaro l'oggetto stesso così

    var __this = this;

    mentre dentro setInterval faccio così

    tm = window.setInterval(function(){__this.funzione();}, 10000);


    Grazie cmq della considerazione ciao!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.