[ Web Proxy ]
URL:
Viewing: https://it.javascript.info/task/changing-prototype [Back]  [Original]

Cambiare "prototype"
IT

Vorremo rendere disponibile questo progetto open-source per persone in tutto il mondo.

Aiutaci a tradurre il contenuto di questo tutorial nella tua lingua!

    Cerca in Javascript.info:
    Cerca nel tutorial:
    Light themeDark theme
    DanskEnglishEspaolFranaisIndonesiaItalianoTrkeOzbek
    torna alle lezioni

    Cambiare "prototype"

    importanza: 5

    Nel codice sotto, andiamo a creare new Rabbit, e successivamente proviamo a modificare il suo prototype.

    Inizialmente, abbiamo questo codice:

    function Rabbit() {}
    Rabbit.prototype = {
      eats: true
    };
    
    let rabbit = new Rabbit();
    
    alert( rabbit.eats ); // true
    1. Aggiungiamo una o pi stringhe. Cosa mostrer alert ora?

      function Rabbit() {}
      Rabbit.prototype = {
        eats: true
      };
      
      let rabbit = new Rabbit();
      
      Rabbit.prototype = {};
      
      alert( rabbit.eats ); // ?
    2. E se il codice come il seguente (abbiamo rimpiazzato una sola riga)?

      function Rabbit() {}
      Rabbit.prototype = {
        eats: true
      };
      
      let rabbit = new Rabbit();
      
      Rabbit.prototype.eats = false;
      
      alert( rabbit.eats ); // ?
    3. E in questo caso (abbiamo rimpiazzato solo una riga)?

      function Rabbit() {}
      Rabbit.prototype = {
        eats: true
      };
      
      let rabbit = new Rabbit();
      
      delete rabbit.eats;
      
      alert( rabbit.eats ); // ?
    4. Lultima variante:

      function Rabbit() {}
      Rabbit.prototype = {
        eats: true
      };
      
      let rabbit = new Rabbit();
      
      delete Rabbit.prototype.eats;
      
      alert( rabbit.eats ); // ?
    soluzione

    Riposte:

    1. true.

      Lassegnazione a Rabbit.prototype imposta [[Prototype]] per i nuovi oggetti, ma non influenza gli oggetti gi esistenti.

    2. false.

      Gli oggetti vengono assegnati per riferimento. Loggetto in Rabbit.prototype non viene duplicato, sempre un oggetto riferito sia da Rabbit.prototype che da [[Prototype]] di rabbit.

      Quindi quando cambiamo il suo contenuto tramite un riferimento, questo sar visibile anche attraverso laltro.

    3. true.

      Tutte le operazion di delete vengono applicate direttamente alloggetto. Qui delete rabbit.eats prova a rimuovere la propriet eats da rabbit, ma non esiste. Quindi loperazione non avr alcun effetto.

    4. undefined.

      La propriet eats viene rimossa da prototype, non esiste pi.


    Web Proxy Viewer  |  New URL  |  Original Page