Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412

    Funzioni inizializzate tramite l'assegnazione a variabili

    Cercando su internet un approfondimento delle clousures, mi sono imbattuto in questo codice

    Codice PHP:
    function Person() {
      
    this.name=null// Giusto per...
      
      
    inspect_this = function() {
        
    alert(this);
      }
    }

    var 
    claudio = new Person();

    inspect_this(); 

    La cosa che non mi torna è, considerando che Person viene usata praticamente come costruttore, che accade se io oltre a claudio decidessi di inizializzare altri nomi?
    Quante funzioni "inspect_this" mi ritroverei?

    La sintassi corretta invece non dovrebbe essere claudio.inspect_this ? (Premetto che l'ho provata ma non va, quindi vuol dire che son io a non aver capito una mazza)

  2. #2

    Re: Funzioni inizializzate tramite l'assegnazione a variabili

    Originariamente inviato da American
    Cercando su internet un approfondimento delle clousures, mi sono imbattuto in questo codice

    Codice PHP:
    function Person() {
      
    this.name=null// Giusto per...
      
      
    this.inspect_this = function() {
        
    alert(this);
      }
    }

    var 
    claudio = new Person();

    inspect_this(); 

    La cosa che non mi torna è, considerando che Person viene usata praticamente come costruttore, che accade se io oltre a claudio decidessi di inizializzare altri nomi?
    Quante funzioni "inspect_this" mi ritroverei?

    La sintassi corretta invece non dovrebbe essere claudio.inspect_this ? (Premetto che l'ho provata ma non va, quindi vuol dire che son io a non aver capito una mazza)
    se fosse scritta cosi il tuo claudio.inspect_this() funzionerebbe. inspect_this() diventa un metodo della classe Person().

    Invece se provi
    Codice PHP:
    var claudio = new Person();
    var 
    antonio = new Person();

    inspect_this(); 
    senza il "this" vedi cosa ti da.. dovrebbe essere comunque "[object Object]" la risposta, riferita all'istanza antonio
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412

    Re: Re: Funzioni inizializzate tramite l'assegnazione a variabili

    Originariamente inviato da Al_katraz984
    se fosse scritta cosi il tuo claudio.inspect_this() funzionerebbe. inspect_this() diventa un metodo della classe Person().

    Invece se provi
    Codice PHP:
    var claudio = new Person();
    var 
    antonio = new Person();

    inspect_this(); 
    senza il "this" vedi cosa ti da.. dovrebbe essere comunque "[object Object]" la risposta, riferita all'istanza antonio
    si è come dici, però volevo sapere cosa accade se non uso il this.. mi ritrovo con "n" funzioni dichiarate? E quale viene chiamata sul lato pratico?

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da American
    si è come dici, però volevo sapere cosa accade se non uso il this.. mi ritrovo con "n" funzioni dichiarate? E quale viene chiamata sul lato pratico?
    Ti ritrovi con "n" funzioni dichiarate. Visto che a ogni chiamata di Person la funzione annidata viene schiaffata nel global scope e sovrascrive la precedente funzione, invocare inspect_this() fa sempre riferimento all'ultimo oggetto person istanzializzato. Le precedenti funzioni sovrascritte non verranno cancellate dalla memoria dal garbage collector poiché sono sempre accessibili dallo scope locale delle varie istanze. In soldoni: stai sprecando memoria.
    Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.

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.