Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Ceras
    Registrato dal
    Oct 2009
    Messaggi
    141

    Dubbi su oggetto prototype in javascript

    Ciao a tutti, sto cercando di capire come funziona l'oggetto prototype di javascript, viene utilizzato molto frequentemente in applicazioni complesse che fanno uso della programmazione ad oggetti, ma c'è un dubbio che mi perseguita...

    Spesso trovo qualcosa di questo tipo:

    codice:
    function Veicolo(passeggeri) {
        this.velocita = 0;
        this.passeggeri = 0;
    }
    
    Veicolo.prototype.carica = function(passeggeri) {
        if(passeggeri > 0)
            this.passeggeri += passeggeri;
    }
    In pratica definisco prima la "classe" Veicolo con 2 attributi, successivamente aggiungo a runtime il metodo carica.
    Spessissimo ho visto fare così, la classe col solo costruttore e tutti i metodi successivi aggiunti col prototype.

    Quello che non ho capito è: se definisco la classe in questo modo:

    codice:
    function Veicolo(passeggeri) {
        this.velocita = 0;
        this.passeggeri = 0;
    
        this.carica = function(passeggeri) {
            if(passeggeri > 0)
                this.passeggeri += passeggeri;
        }
    }
    Non ottengo una risultato analogo? Anzi, includendo il metodo all'interno della dichiarazione di Veicolo si intuisce meglio qual'è la definizione della classe... Ma allora perché spesso non fanno così? Che vantaggi porta la prima tecnica rispetto alla seconda?

  2. #2
    Mi accodo al dubbio.
    Io solitamente uso la seconda forma perche' mi pare piu' leggibile. Ma magari c'e' una ragione per cui a volte bisogna usare l'altra
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  3. #3
    http://forum.html.it/forum/showthrea...readid=1014613
    un classico

    l'unico caso in cui è preferibile l'uso di prototype
    (performance)
    è il caso in cui le proprieta che non cambiano
    run time

    Codice PHP:
    function Shape(){   
      
    this.name 'shape'

    //better
    function Shape(){}
    Shape.prototype.name 'shape'

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.