GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

No menu could be recovered. Follow the blue links in the page.

This view

  • Original page
  • New address

GeezerVison is showing it.javascript.info — Algoritmo di ricerca

  • Tutorial
  • Il linguaggio JavaScript
  • Prototypes, inheritance
  • Prototypal inheritance
torna alle lezioni

Algoritmo di ricerca

importanza: 5

Il task è suddiviso in due parti.

Dati i seguenti oggetti:

let head = {
  glasses: 1
};

let table = {
  pen: 3
};

let bed = {
  sheet: 1,
  pillow: 2
};

let pockets = {
  money: 2000
};
  1. Utilizza __proto__ per assegnare il prototypes in modo che la catena segua il percorso: pockets → bed → table → head. Ad esempio, pockets.pen dovrebbe essere 3 (in table), e bed.glasses dovrebbe essere 1 (in head).
  2. Rispondi alla domanda: è più veloce ottenere glasses come pockets.glasses o come head.glasses? Eseguite test se necessario.
  1. Aggiungiamo __proto__:

    let head = {
      glasses: 1
    };
    
    let table = {
      pen: 3,
      __proto__: head
    };
    
    let bed = {
      sheet: 1,
      pillow: 2,
      __proto__: table
    };
    
    let pockets = {
      money: 2000,
      __proto__: bed
    };
    
    alert( pockets.pen ); // 3
    alert( bed.glasses ); // 1
    alert( table.money ); // undefined
  2. Nei moderni engine, che valutano la performance, non c’è alcuna differenza tra il prelevare una proprietà dall’oggetto oppure direttamente dal suo prototype. Sono in grado di ricordare da dove è stata presa la proprietà e riutilizzarla alla prossima richiesta.

    Ad esempio, per pockets.glasses ricordano dove hanno trovato glasses (in head), quindi la prossima volta la cercheranno proprio li. Sono anche abbastanza intelligenti da aggiornare la cache interna nel caso qualcosa cambi, quindi questa ottimizzazione è sicura.

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.