Visualizzazione dei risultati da 1 a 4 su 4

Visualizzazione discussione

  1. #3
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Ci sono due inconvenienti di piccolo taglio col tuo codice:

    1. Il prototipo non viene ereditato – “ (new Automobile(4, "blu")) instanceof Veicolo” restituisce false col tuo codice;
    2. Crei delle closures – se puoi, i metodi appendili sempre al prototipo invece di appenderli ogni volta alle istanze.

    Ti giro un esempio chiarificatore:

    codice:
    /* Creo il costruttore "Veicolo" */
    function Veicolo (ruote, colore){
        this.ruote = ruote;
        this.colore = colore;
    }
    
    /* Creo il costruttore "Automobile" */
    function Automobile (ruote, colore) {
         Veicolo.call(this, ruote, colore);
    }
    
    /* Rendo un'istanza di "Veicolo" prototipo del costruttore "Automobile" */
    Automobile.prototype = Object.create(Veicolo.prototype);
    Automobile.prototype.constructor = Automobile;
    
    /* Creo i metodi; quelli di "Veicolo" verranno ereditati da "Automobile", ma non viceversa */
    Veicolo.prototype.accelera = function (velocita) {
        console.log("Vado a " + velocita);
    };
    
    Automobile.prototype.frena = function (secondi) {
        console.log("Ho frenato in " + secondi);
    };

    Testiamo l'ereditarietà…

    codice:
    var miaAuto = new Automobile(4, "blu");
    
    alert(miaAuto instanceof Automobile); // true
    alert(miaAuto instanceof Veicolo); // true

    P.S. Non esistono classi in JS (è quindi scorretto chiamarle tali), ma esiste di meglio: i costruttori!
    Ultima modifica di carlomarx; 07-02-2015 a 15:42
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.