Algoritmo di ricerca
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
};
- Utilizza
__proto__per assegnare il prototypes in modo che la catena segua il percorso:pockets→bed→table→head. Ad esempio,pockets.pendovrebbe essere3(intable), ebed.glassesdovrebbe essere1(inhead). - Rispondi alla domanda: è più veloce ottenere
glassescomepockets.glasseso comehead.glasses? Eseguite test se necessario.
-
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 -
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.glassesricordano dove hanno trovatoglasses(inhead), 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.