Visualizzazione dei risultati da 1 a 5 su 5

Discussione: I costruttori

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    15

    I costruttori

    Premesso che studio da poco Js, e che ho letto molto sui cotruttori (comprese le guide html) ho provato a scrivere questo codice e non esce alcun 'risultato'.

    Dato che da quel che leggo in giro questi costruttori non sono chiarissimi a tutti, penso possa essere utile anche per altri questo topic.

    Il codice che ho scritto è il seguente:

    <script>
    function Prova(a,b) {
    this.nome=a;
    this.cognome=b;
    this.funzione function() {
    return this.nome + this.cognome;
    };
    };

    var x = new Prova("Mario","Rossi");

    document.getElementById("demo").innerHTML = x;
    </script>


    Aggiungo quello che ho capito io dei costruttori:

    I costruttori sono 'funzioni' che ricalcano la struttura di un oggetto che vogliamo creare (quindi dove le coppie nomi/valori corrispondono alle coppie proprietà/valori dell'oggetto che vogliamo creare e dove le funzioni corrispondono ai metodi dell'oggetto che vogliamo creare).

    Nel momento in cui creiamo la variabile x e assegnamo new Prova() creiamo un oggetto di nome x che ha la stessa struttura del costruttore.

    L'uso di this serve per riferirsi all'interno del costruttore a proprietà e metodi dell'oggetto creato con new Prova. Cioè è come se this fosse un oggetto esso stesso con cui 'personalizzare' l'oggetto x.

    Aspetto vs osservazioni, se ho detto cose stupide o imprecise mi scuso, sono solo tre giorni che studio Js.


  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    il codice rivisto sarebbe

    codice:
    function Prova(a,b) {
      this.nome=a;
      this.cognome=b;
      
      this.funzione = function() {
         return this.nome + this.cognome;
      };
    };
    
    var x = new Prova("Mario","Rossi");
    var y = new Prova("Carlo","Bianchi");
    
    alert(x.funzione());
    alert(y.funzione());

    i costruttori sono oggetti (le funzioni sono oggetti) che possono essere istanziati

    un'istanza del costruttore è quella che si ottiene attraverso un'assegnazione e l'uso della keyword "new"
    nel caso sopra le istanze sono "x" e "y" e il costruttore è "Prova"

    "this" è un riferimento all'istanza e consente quindi di accedere ai metodi e alle proprietà dell'istanza.
    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
    Registrato dal
    Nov 2016
    Messaggi
    15
    Anzitutto ti ringrazio enormemente della risposta. (Avevo dimenticato un = ).

    La cosa che non capisco è però perché se provo lo stesso codice però con il document.getElementById("id").innerHTML = x mi esca
    un lavoro del tipo [object Object]....

    A parte questo spero piano piano di imparare, non ho alcuna esperienza con i linguaggi di programmazione, quindi insomma devo imparare proprio tutto!

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    perchè nel tuo esempio x è un object

    visto che la passi come stringa a innerHTML, il valore di x viene convertito in stringa ovvero [object Object] e in realtà vedi la rappresentazione stringa di un oggetto.


    tu cosa ti aspetti che venisse scritto?
    Vuoi aiutare la riforestazione responsabile?

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    15
    Quote Originariamente inviata da fcaldera Visualizza il messaggio
    perchè nel tuo esempio x è un object

    visto che la passi come stringa a innerHTML, il valore di x viene convertito in stringa ovvero [object Object] e in realtà vedi la rappresentazione stringa di un oggetto.


    tu cosa ti aspetti che venisse scritto?
    Io mi aspettavo uscisse Mario Rossi. Probabilmente perchè sono appena agli inizi dei miei studi e quindi devo ancora imparare praticamente tutto. Per intenderci fa conto che ho appreso qualche nozione di base relativa a operatori, valori, funzioni, oggetti, keyword, sintassi generale. Ma davvero poche cose per ora.

    Io sono una che si applica e impara in fretta ma, a differenza di altri casi (html e css ad esempio), mi sembra che Javascript spesso sia spiegato (vari tutorial e guide su internet) in modo superficiale. Invece a me piace capire tutto.

    Ti ringrazio della risposta.


Tag per questa discussione

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.