Algorithme de recherche
La tâche comporte deux parties.
Étant donné les objets suivants :
let head = {
glasses: 1
};
let table = {
pen: 3
};
let bed = {
sheet: 1,
pillow: 2
};
let pockets = {
money: 2000
};
- Utilisez
__proto__
pour attribuer des prototypes de manière à ce que toute recherche de propriété suive le chemin:pockets
→bed
→table
→head
. Par exemple,pocket.pen
devrait être3
(trouvé danstable
), etbed.glasses
devrait être1
(trouvé danshead
). - Répondez à la question: est-il plus rapide d’obtenir
glasses
en tant quepockets.glasses
ouhead.glasses
? Analyse si nécessaire.
-
Ajoutons
__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
-
Dans les moteurs modernes, en termes de performances, il n’ya pas de différence selon que l’on prend une propriété d’un objet ou de son prototype. Ils se souviennent du lieu où la propriété a été trouvée et le réutilisent à la demande suivante.
Par exemple, pour
pockets.glasses
ils se souviennent où ils ont trouvéglasses
(danshead
), et la prochaine fois rechercheront là. Ils sont également assez intelligents pour mettre à jour les caches internes en cas de changement, de sorte que l’optimisation est sécurisée.